我运行的一些内核扩展遇到了问题,因为使用一两天后,内存使用量kernel_task
增长到 1.2GB 并且一直保持在这个水平。问题是我安装了一些第三方扩展,尝试逐个删除它们会很麻烦,更不用说泄漏实际上可能出现在一些核心模块中。
那么,有没有办法查看每个 kext 内存消耗kernel_task
总量的明细?
答案1
那里是一个命令行实用程序,允许您查看记忆有线内核扩展。然而,内存泄漏通常会不是显示为有线记忆,但我们可以希望:
打开终端
类型
kextstat
如果你没有看到有线内存列大于尺寸列(.kext 的默认内存大小)中任何你怀疑有问题的内核扩展(或任何.kext)继续执行步骤4。
键入
man kextutil
,阅读此手册页。我已成功使用它来帮助正确诊断内核扩展的安装问题。它至少对您有用。X。我不确定
kextcache
是否能帮到你。另外,就调试有问题的 .kext 而言,你需要使用类似 Xcode 开发环境的东西,并且至少有 2 台机器可用。我只想说,要小心你启动参数。搜索 Apple 自己的开发文档,了解如何在您的平台上执行此操作。如果你参与内核扩展的编码,你应该已经知道如何做到这一点。这不是为了按键的乐趣。
要记住以下几点:
如果有可用内存,操作系统将使用更多内存。因此,如果您最近将内存从 8GB 升级到 16GB,您可能已经注意到 kernel_task 的内存使用量大幅增加。
集成 GPU(显卡)与 kernel_task 共享内存,因此某些进程会导致内存使用量突然增加。最多通常,当进程退出时,内存会被 GPU 释放,并且 kernel_task 的内存消耗会下降。
如果您无法在 Terminal.app 中跟踪此情况,我会这样做:
下载并安装七人,(然后重新启动 Mac),然后运行 fseventer。
打开活动监视器,看看是否可以找到这些程序的相关进程
同时观察这两个程序,看看是否可以将某个进程与向磁盘写入大量数据联系起来(HP 打印机软件是一种臭名昭著的过度占用内存的软件,它经常执行某些操作)。然后尝试从 AM 退出进程,看看 fseventer 中的活动是否停止,或者 kernel_task 的内存消耗是否下降了一些。
如果你认为你知道 .kext 但不确定是哪个程序,或者知道程序但不确定是哪个 .kext,那么使用可疑包裹(也可在下面链接的 SU 问题中找到)检查您怀疑可能与 .kext 相关的任何 .pkg/.mpkg 文件。您还可以按住 Control 键单击/右键单击 .m/pkg 文件,然后单击“显示包内容”以进入内部。
查找程序某些部分所在的另一种方法是进入 Terminal.app,输入
lsbom
(后面有一个空格),然后从中拖动相关文件,/Library/Receipts
输入一次 delete,然后/Contents/Archive.bom
按回车键。(如果已迁移从另一台计算机)您还可以使用AppCleaner协助移除/调查。
...帮助者了解以下内容也会很有帮助-->您正在运行什么硬件/软件?所有硬件/软件都是最新的吗?所有这些 .kext 是否都可以完成类似的任务?您在做什么?您是否连接了任何大型硬件(例如音频接口)?
如果你不能用这种方式弄清楚,我会通过下面的清单,看看你是否能回答/消除/从中收集到任何东西(不幸的是,这类问题通常需要一些除非你很幸运并且程序的资源消耗非常明显,否则需要进行大量调查):
如果您的程序已迁移,最好重新安装它们。迁移,甚至只是克隆驱动器,都不是没有注意事项的。
硬盘损坏也会导致这种情况发生,或者逻辑板的一部分实际上可能有故障或损坏(我亲眼见过这种情况)。运行 Apple 硬件测试 (AHT)(应该在原始安装光盘上随机器一起提供)(或者如果你有朋友在 Apple 工作,或者只是把它带进去,则运行 Apple 服务诊断 (ASD))
您是否确定哪些程序正在运行内核扩展?我有大量第三方应用程序在后台以各种隐藏/不可见的阶段运行,其中大多数都没有安装内核扩展。
您是否检查过“应用程序”>“实用程序”中的 Console.app?如果您还没有检查日志文件,那么您应该这样做,它可能会为您或潜在的帮助方提供提示,在这种情况下,您可能能够修改您的问题以获得特异性,除非您决定从系统中删除罪魁祸首。
终端中的“top”命令可以提供比活动监视器更详细的信息。
我喜欢这个节目菜单仪表,它可以用于在不打开活动监视器的情况下监视内容。当然,这是另一个将要运行的第三方程序。
您是否已开始安全模式(禁用额外的内核扩展)?
从重新安装以来的碎片化/天数来看,这是一次非常“干净”的安装吗?(显然从正在运行的第三方应用程序的数量来看不是)。
您是否正在共享大量文件并不断备份、批量编辑或音频/视频转码?
首次发帖:
我的 kernel_task 使用了 >800MB真实的根据活动监视器,内存和 >50MB VM。正常运行时间不到 6 小时。我刚刚切换用户并退出 Aperture,它使用了 ~3GB 的实际内存,内核任务减少了 ~50MB。
2012年9月12日:
kernel_task 使用了 1.04GB真实的内存 67MB VM。正常运行时间 = ~5.5 天。两个用户登录,当前用户在 5 个不同的浏览器上有数十个浏览器选项卡。
你可能还想看看这个回答问题在 SU 和其接受的答案上,以及在那里列出的软件,所有这些都是帮助您彻底解决这个问题的工具。