为什么运行 vs 系统监视器时会得到不同的数字free -m
?几天来,我一直在运行带有 Flash 的 Firefox,我的机器变得很慢;它占用了我全部 1GB 的内存,所以我关闭了 Firefox 和 npviewer.bin,现在系统内存显示我的内存为 192Mb,而之前free -m
显示的是 647Mb?
不管怎样,我认为系统监视器是正确的。
答案1
在任何稍微复杂的操作系统下,都没有明确的概念来了解特定应用程序使用了多少内存,或者有多少内存可用。主要原因如下:
- 如果有交换,您是否将可用的交换空间包含在可用内存中?如果没有,那么拥有交换有什么意义?但是如果有,即使您的系统由于缺少 RAM 而出现故障(即大量交换),您也可能始终拥有大量可用内存。
- 内存有很多用途。主要有两种:应用程序分配的内存和专用于磁盘缓存的内存。在资源充足的系统中,这两者通常具有相同的数量级。如果仅计算未用于任何目的的内存,则内存很少是正常的:磁盘缓存不会消失,直到需要它们的内存为止。但是,如果将磁盘缓存包括在可用内存中,您可能会认为可以用应用程序内存填满它,但随后您会因缺少磁盘缓存而崩溃。
- 共享内存使得计算分配给特定应用程序的内存份额变得困难。共享内存包括共享库和磁盘缓存等内容,用于多个应用程序打开的文件。
因此,您报告的两个数字可能都是正确的,只是计算了不同的“可用内存”概念。(并且free
报告了几个数字;您没有说 647MB 是哪一个 — 在该-/+ buffers/cache
行中,磁盘缓存算作可用内存,而在该Mem
行中则不计入。)