我们正在运行分析一个 java 程序的内存使用情况。我们有一个 512 ram 的盒子,顶部显示使用了 500 MB 左右的 ram,几乎没有空闲。但是在 RES 列中,我们可以看到 jvm 只使用了 100MB 左右。并且所有其他进程甚至都不重要(少于 1k)。那么究竟是什么消耗了所有内存,或者我们只是读错了顶部?
问问题
1122 次
3 回答
2
这 500MB 包括页面缓存使用的内存——磁盘文件的缓存部分。此内存可回收以供进程使用 - 因此,如果您将列为“空闲”的内存添加到列为“缓存”的内存,那么您将拥有仍然可供任务使用的内存。
或者,您可以使用该free
命令,该命令将该数字列在“free”列中的-/+ buffers/cache:
行上。
于 2010-08-11T02:14:53.693 回答
0
此外,多个应用程序(想想动态库)使用的内存在每次被引用时都会被计数,即使它占用了一份副本。也尝试使用htop
。
于 2010-08-10T17:41:12.537 回答
-1
那是保留的内存。该进程不使用它,它是为它保留的。如果另一个进程想要分配更多内存,它将获得许可。
于 2010-08-10T17:37:16.603 回答