Why buffers equals to used memory?

Zip*_*ppo 5 linux memory openvz

I'm using Ubuntu 11.10, virtualized by OpenVZ. That output of free -m shows that buffers is always equal to used.

             total       used       free     shared    buffers     cached
Mem:          2048       1079        968          0          0          0
-/+ buffers/cache:       1079        968
Swap:            0          0          0
Run Code Online (Sandbox Code Playgroud)

Is that the reason I can't run a java virtual machine, although there's 968mb of free memory?

gol*_*cks 4

这是由于 OpenVZ。您可以看到应用的限制/proc/user_beancounters,这里有一些解释: http: //wiki.openvz.org/Privvmpages

虽然我在容器中没有遇到过内存问题,但我认为这里的建议是:

http://www.moeding.net/archives/20-Optimizing-virtual-memory-in-OpenVZ-I.html

从设置堆栈大小开始ulimit是一个不错的选择。请注意,OpenVZ 使用与您在顶部 VIRT 列中找到的相同指标的暗示是错误的;我相信“privvmpages”是标记为可写和私有的虚拟页面,因此明显小于进程的整个地址空间。其中还有一些其他错误信息(“不幸的是,内存不足是大多数程序无法正确处理的错误情况。”——在 Linux 上,内存不足默认情况下不是错误情况,因此程序不会得到有机会妥善处理)。但是降低堆栈大小可能仍然值得尝试。

Slm 的建议似乎是寻找肥猫的一个很好的解决方案,但如果你的切片和我的一样,那就没有/proc/bc办法了。但是,您可以通过 获取进程的可写和私有统计信息pmap -d,或者查看顶部的数字。

1 gig 似乎足以运行 JVM,但有一个复杂的情况:由于已使用和可用的内存量不是一个简单的数字(请参阅此处对原因的一些讨论),总数可能超过机器实际提供的内存量在给定的时间点。