我已经搜索过可能的解决方案,例如How to monitor the computer's cpu, memory, and disk usage in Java?。但是在缓冲区和缓存中花费的内存在任何地方都没有提到?
例如,在linux上,输出free -m:
total used free shared buffers cached Mem: 2011 1835 175 0 309 847 -/+ buffers/cache: 678 1333 Swap: 1998 0 1998
我已经测试了sigar的输出,它将可用内存报告为175 MB。
这个问题的原因是如何检测OS何时没有内存?在free -m
的上一个输出中,175 MB似乎很低;但是通过添加缓冲区和缓存,很明显可用内存实际上是2 GB中的1333 MB。
总结一下,使用java,可以获得1333 MB的值作为空闲内存的值吗?正如我已经提到的,到目前为止我只知道如何获得175 MB的价值。
答案 0 :(得分:1)
我不直接了解免费内存,但JVM维护JMX bean,我相信这些bean有更多信息:http://docs.oracle.com/javase/1.5.0/docs/guide/management/jconsole.html
答案 1 :(得分:1)
答案 2 :(得分:1)
我确信不可能使用Java API来获取缓存/缓冲区数量。甚至来自SIGAR的人也使用JNI包装器和本机系统调用......