3

我需要使用定期收集 JVM 的统计信息。稍后,我需要记录 JVM 可用内存/空闲内存、已用内存、总内存。

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

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

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

这是收集统计数据的最佳方式。使用 MemoryPoolMXBean.getUsage() 或运行时类。

4

1 回答 1

2

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

正如Java 中的内存通知中所述,您可以通过交互方式来监控内存,因为您可以将通知侦听器添加到您的MemoryMXBean.

所以对于准时的非常本地的检查,Runtime 可能就足够了,对于全局监控,MemoryMXBeans是要走的路。

于 2009-05-12T12:11:03.587 回答