Mac OS X:什么在使用我的‘活动’内存?

Mac OS X:什么在使用我的‘活动’内存?

我正在使用配备 8 GB RAM 的最新款 MacBook Pro,在工作中使用几个小时后,我注意到“活动”内存的数量不断增长。

每当我重启 Mac 时,一切看起来都很好,而且几乎不使用任何 RAM。但几个小时后,它看起来是这样的:

截屏

如您所见,在这种情况下它大约为 4.3 GB。

作为一名开发人员,我知道“活动内存”是当前正在运行的进程使用的内存量。所以我做的第一件事就是退出所有应用程序并终止所有似乎不属于 Mac OS X 的进程。

在我执行此操作后,我的活动内存减少了约 400 MB,但卡在了屏幕截图中所示的状态。没有其他进程或应用程序可以退出。

现在我想知道什么是否真正占用了内存?top并且活动监视器未报告任何内存使用率较高的进程。

有任何想法吗?

谢谢!


更新 1:

感谢 Doug Harris 的回答,我制作了此屏幕截图。它显示整个系统的活动内存使用量为 2.55 GB,但命令ps计算出的内存使用量仅为 1.55 GB。

在此处输入图片描述

我不知道剩下的 2.55 GB 去了哪里或分配到了哪里。我安装了 Instruments,但由于这种情况确实会在几个小时内发生,因此很难使用 Instruments。这感觉像是操作系统中某个地方发生了内存泄漏。可能是驱动程序(虽然我没有安装任何内核扩展 - 已使用 进行了检查kextstat)。

我个人认为能够看到有关内存管理状态的“更多”信息会很有趣。据我所知,在 Linux 下,“/proc”下有一些信息可用。

答案1

即使没有单个进程具有较高的内存使用率,但仍有许多进程在运行——所有这些加起来。

使用ps和其他命令行工具,您可以深入了解这一点。

首先,使用选项来ps限制仅显示常驻内存和命令名称。-m按内存使用情况对输出进行排序,-a显示所有用户的进程,-x显示与终端不相关的进程(即大多数 mac 应用程序)。

$ ps -axm -o "rss,comm" 

以下是我看到的前几行:

   RSS COMM
210256 /Applications/Firefox.app/Contents/MacOS/firefox-bin
158276 /Applications/Google Chrome.app/Contents/MacOS/Google Chrome
155360 /Applications/iTunes.app/Contents/MacOS/iTunes

这些位于顶部并不令我感到意外(显示的 Chrome 进程只是众多进程中的一个)。RSS 列以 1024 字节块表示。因此 iTunes 使用了大约 151.7 MB。

如果您喜欢以这种方式分析事物,那么该输出的格式足够好,您可以将其放入电子表格中进行分析。我会坚持使用命令行一段时间

把更多串在一起来查看所有过程的总和:

$ ps -axm -o "rss,comm" | awk 'BEGIN { s=0;}; {s=s+$1;}; END { printf("%.2f GB\n", (s/1024.0/1024));}'

我看到的输出与2.44 GB我在活动监视器中看到的活动内存并不完全相同,但足够接近,我可以使用 ps 来彻底了解这个问题。

您可以将那些使用超过 100MB 的进程加在一起:

$ ps -axm -o "rss,comm" | awk 'BEGIN { c=0;s=0;}; ($1 > 100000) {c=c+1;s=s+$1;}; END { printf("%.2f GB from %d processes\n", (s/1024.0/1024),c);}'

0.98 GB from 8 processes

我还没告诉你具体什么正在使用您的 Mac 内存,但这些工具将帮助您发现。

答案2

man -k DTrace。这些工具可以解决这个问题。祝你好运

答案3

听起来好像某个系统进程正在泄漏内存(要么就是因为某种原因,正在运行的系统进程数量越来越多)。您可以直接在活动监视器中检查这一点,方法是将工具栏中的弹出菜单从“我的进程”切换到“所有进程”,然后按“实际内存”列排序。查找使用大量实际内存的进程和/或大量相同进程名称的实例。这不能解决问题,但至少可以让您知道问题出在哪里。

答案4

对我来说,活动内存似乎只是可供重复使用的释放内存,但没有明确标记为“空闲”

相关内容