为什么泄漏的内存似乎已分配给kernel_task,为什么OS X无法将其垃圾回收
以前我曾被告知,某些应用程序存在内存泄漏的迹象是kernel_task存在很大的内存占用,通常约为千兆字节。如果出了毛病kext导致此内存使用量,我们期望看到分配的内存与预期分配的内存之间存在差异,即 diff <(kextstat|tr -s ' ' | cut -d ' ' -f 5) <(kextstat| tr -s ' ' | cut -d ' ' -f 6) 会返回“有线”和“名称”字样以外的内容。 在撰写论文时,我注意到在pdf在“预览”中打开时更改pdf常常会导致不好的事情发生:有时,的内存使用量kernel_task可能会增加到大约8 GB,甚至更多。如果我取消预览,它会立即恢复正常。因此,显然出了点问题–在这种情况下,Preview正在泄漏内存。 所以,我的问题是这样的:如果我知道某个进程由于脚印的突然和意外增加而泄漏了ram kernel_task,为什么OS X不能知道出了什么问题。如果杀预览恢复我的思念malloc()“d内存,为什么不达尔文为我做垃圾回收自动的? 我对内存管理的工作原理有基本的误解吗? 编辑:(15/9/15) 这是我在说什么的演示。首先,我注意到内存使用率很高kernel_task(注意:预览已打开,使用333 MiB的ram在活动监视器的底部可见): 遵循下面Ashley的有用评论,让我们找出每个kext使用了多少: $ kextstat | awk 'NR==1{ printf "%10s %s\n", $5, $6; } NR!=1{ printf "%10d …