用于获取应用程序的内存堆转储以监视它的Java代码

时间:2014-01-24 09:51:13

标签: java memory-leaks jvm

您需要一些Java代码来获取JVM的内存转储以监控应用程序性能。是否可以使用java代码分析内存转储。我需要分析在不同互连网络上可用的几个JVM的内存转储。

1 个答案:

答案 0 :(得分:4)

您可以通过获取HotSpotDiagnosticMXBean实例(已命名)并调用dumpHeap()方法来完成此操作:

MBeanServer server = ManagementFactory.getPlatformMBeanServer();
HotSpotDiagnosticMXBean bean = ManagementFactory.newPlatformMXBeanProxy(server,
                "com.sun.management:type=HotSpotDiagnostic", HotSpotDiagnosticMXBean.class);
bean.dumpHeap("filename", /* live objects */ true);

可以在http://docs.oracle.com/javase/7/docs/jre/api/management/extension/com/sun/management/HotSpotDiagnosticMXBean.html#dumpHeap(java.lang.String, boolean)

中找到更多信息

如果您需要比较内存使用情况,另一个选项是获取MemoryPoolMXBean,它可以返回有关各种内存空间的几个有用信息