我查看了 Linux 上的系统监视器,发现 Firefox 使用了 441 MB 内存,其他几个应用程序使用了 274、257、232 等(总计超过 3 GB 的虚拟内存)。因此,我切换到“资源”选项卡,它显示我使用了 462 MB 内存,并且没有使用交换空间。我很困惑。如果程序实际上没有使用虚拟内存,那么虚拟内存量意味着什么呢?我在想,也许是它们请求了内存但没有使用,但操作系统怎么会知道呢?我想不出任何“我将来可能需要这么多内存”的功能。
答案1
首先,top 并没有真正正确地计算共享内存。其次,是的,程序会请求内存使用权,然后使用它,但它可能永远不会接触任何内存,操作系统知道这一点。每个应用程序分配所有的内存和交换空间都没有问题,只要它们不尝试使用它 :-D > 我们不是在 Mac OS Classic 世界中(事实上,旧的 Ram Doubler 就是这样工作的,让您利用分配和使用之间的差异)。
答案2
您是否曾尝试过启动“vmstat”?如果您无法控制自己,请像这样从命令行启动它:
状态监测
请阅读手册以减少您的欠款。我在手册页中看到了几个有趣的标志……它们可能有助于您理解。另外,如果您真的担心 Firefox 内存消耗……那么请查看此解决方案……这里
http://unixbhaskar.blogspot.com/2009/10/firefox-saga-on-opensuse.html
和这里
http://unixbhaskar.blogspot.com/2010/02/cleanup-firefox-clogging-by-pruning-its.html
如果你真的有兴趣了解 Linux 内部动态内存分配,请阅读此处
http://www.ibm.com/developerworks/linux/library/l-linux-slab-allocator/index.html
并使用一个名为“pmap”的二进制文件..像这样使用它pmap(process-id)来了解该特定应用程序如何使用内部内存。要了解有关“man pmap”的更多信息。
我希望我能够给你提供更多的见解。
干杯!