如何监控java中的空闲内存(包括缓冲区和缓存)?

bba*_*a42 11 java monitoring

我已经搜索过可能的解决方案,例如如何在Java中监控计算机的CPU,内存和磁盘使用情况?.但在缓冲区和缓存中花费的内存在任何地方都没有提到

例如,在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的价值.

rob*_*rob 1

如果您尝试获取操作系统本身(而不是 JVM)的内存统计信息,则可以使用JNAJNI直接对操作系统进行特定于平台的本机 API 调用。