MemoryPoolMXBean.getUsage()优于Runtime.freeMemory()的优点

时间:2009-05-12 11:53:36

标签: java jmx

我需要使用常规时间间隔收集JVM的统计信息。后来,我需要记录JVM可用内存/可用内存,已用内存,总内存。

以下是我想到的两个选项。

  1. ManagementFactory.getMemoryPoolMXBeans()并遍历每个MemoryPoolMXBean,最后使用MemoryPoolMXBean.getUsage()收集统计信息。

  2. Runtime.freeMemory(),Runtime.maxMemory(),Runtime.totalMemory

  3. 这是收集统计信息的最佳方式。使用MemoryPoolMXBean.getUsage()或Runtime Class。

1 个答案:

答案 0 :(得分:2)

这是关于在所有应用程序生命周期中监听内存使用情况,而不是在应用程序中的各个位置寻找信息。

正如Memory notifications in Java中所述,您有一种交互式方式来监控内存,因为您可以向MemoryMXBean添加通知监听器。

因此,对于强大的本地检查,运行时可能就足够了,对于全局监控,MemoryMXBeans是可行的方法。