我的系统有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异常。我在想我的操作系统是否有任何问题。
答案 0 :(得分:3)
您更有可能需要使用增加的最大内存设置来运行JVM。 JVM将运行它自己的内存使用限制(取决于操作系统提供的限制)。
e.g。
$ java -Xmx2048m ...
将以最大内存设置2Gb运行JVM。有关详细信息,请参阅here。
如果您遇到OutOfMemoryException
,那么您可能需要调整此设置。 JVM也可能无法从操作系统分配该内存,或者您的程序遭受内存泄漏,但设置-Xmx
是解决此类问题的合理的第一种方法。请注意,以类似方式设置-Xms
将强制JVM在启动时分配内存,并且不仅可用作优化,还可用作缺少allocatbale内存的早期警告。有关详细信息,请参阅here。
答案 1 :(得分:1)
我在想我的操作系统是否有任何问题。
不。问题出在您的程序中(它使用太多内存或有内存泄漏)或运行它的方式(堆太小)。 Brian的回答解释并提供了一些解决方案。
这是否意味着免费内存仅为143.4MB,或143.4 + 6.1BG?为什么要缓存?这是正常的吗?
是的,这是正常的。
“空闲内存”是目前尚未用于其他任何内容的RAM页面,可立即发送给需要它们的应用程序。
“磁盘缓存”是当前持有文件系统磁盘块的副本的RAM页面。它们用于使文件读取速度更快(速度更快)。它们被视为空闲内存的原因是它们可以以几乎零成本的方式回收操作系统。事实上,如果启动更多应用程序,您会发现磁盘缓存会自动缩小。