获取进程java使用的内存

时间:2012-11-27 06:51:59

标签: java

我知道这个问题经常出现,但是我从这个网站查了一些解决方案,但似乎它对我不起作用。

所以,我编写了一个小的java程序,我想知道它在不同的执行时刻消耗了多少内存。我尝试了Runtime.getRuntime.total()和Runtime.getRuntime.free(),但每次都得到(几乎)相同的结果。

我对整个JVM可用或使用了多少内存不感兴趣,我想专门知道我的java进程。

2 个答案:

答案 0 :(得分:10)

这将获得您的进程使用了​​多少堆内存。

MemoryUsage heapMemoryUsage = ManagementFactory.getMemoryMXBean().getHeapMemoryUsage();
heapMemoryUsage.getUsed();

您还可以获取所有内存池并迭代它们以确定其他内存使用情况

List<MemoryPoolMXBean> memoryPoolMXBeans = ManagementFactory.getMemoryPoolMXBeans()

您也可以使用jvisualvm来查询您的申请。

答案 1 :(得分:3)

  

我对整个JVM可用或使用了多少内存不感兴趣,我想专门知道我的java进程。

在典型的用例中,“整个JVM”和“您的Java进程”之间没有真正的区别。至少,不是从内存使用的角度来看。

问题是,JVM所做的一切,以及它分配的每一块内存都是在应用程序的要求下完成的。并且每个内存字仍然可以访问,因为应用程序中的某些内容可能在某些时候使用它。

所以你要求的确实没有多大意义。当然,这些信息不可用。即使这确实有意义,我也不知道通过了解应用程序的“内容”以及JVM的内容会获得什么。