CentOS 内存可用性

CentOS memory availability

我的系统有 8GB 内存,我的系统是 CentOS 7。系统信息显示以下内存使用情况。

Memory Information
Total memory (RAM):  7.6 GB
  Free memory:  143.4 MB (+ 6.1 GB Caches)
  Free swap:  7.8 GB

这是否意味着可用内存只有 143.4MB,或 143.4 + 6.1BG?为什么是缓存? 这是正常的吗?我问这个是因为我 运行 是一个 Java 问题但是收到了 OutOfMemory 异常。我在想是不是我的操作系统有问题。

您更有可能需要 运行 您的 JVM 增加最大内存设置。 JVM 将 运行 有它自己的内存使用限制(受 OS 可用的限制)。

例如

$ java -Xmx2048m ...

将运行 JVM 的最大内存设置为 2Gb。有关详细信息,请参阅 here

如果您遇到 OutOfMemoryException,那么您可能需要调整此设置。也有可能 JVM 无法从 OS 分配该内存,或者您的程序遭受内存泄漏,但设置 -Xmx 是解决此类问题的合理的首选方法。请注意,以类似方式设置 -Xms 将强制 JVM 在启动时分配内存,这不仅可以作为优化,还可以作为缺少分配内存的早期警告。有关详细信息,请参阅 here

I am thinking whether there is any problem with my operating system.

没有。问题要么出在你的程序中(它使用了太多内存或有内存泄漏),要么出在你 运行 它的方式(堆太小)。布赖恩的回答解释了,并提供了一些解决方案。

Does this mean free memory is only 143.4MB, or 143.4 + 6.1BG? Why is it caches? Is this normal?

是的,很正常。

"free memory" 是当前未用于任何其他用途的 RAM 页,可以立即分发给需要它们的应用程序。

"disk cache" 是 RAM 页,当前持有 文件系统磁盘块。它们用于加快文件读取速度(快很多)。它们被算作空闲内存的原因是它们可以被 OS 以几乎零成本回收。事实上,如果启动更多应用程序,您会发现磁盘缓存的大小会自动减小。