我搜索了它,但没有找到任何方法在应用程序终止后获取堆转储。
从 eclipse 中,我触发了使用 eclipse 插件开发创建新项目的过程。在代码级别,我有两种创建新项目的方法。 我想比较这两种方法。
我使用 JVsualVm 来分析在创建新项目生成过程中生成的数据。
当我的进程执行结束时,我想获取该正在运行的应用程序的堆转储。
但问题是运行进程停止后,它会从 JvisulaVM 的应用程序 View 中删除,我无法获取它的堆转储。
有什么方法可以从 JVisualVm 获取已停止应用程序的堆转储,因为我仍然打开该正在运行的应用程序的选项卡,但该应用程序已从应用程序 View 树中删除。
最佳答案
您可以在应用程序结束时以编程方式创建它: https://blogs.oracle.com/sundararajan/entry/programmatically_dumping_heap_from_java (http://web.archive.org/web/20170118001056/https://blogs.oracle.com/sundararajan/entry/programmatically_dumping_heap_from_java)
好吧,这并不完全是结束,但也许足以满足您的需求。
这是从上面的帖子简化的代码:
static void dumpHeap(String fileName, Boolean live) throws java.io.IOException {
java.lang.management.ManagementFactory.newPlatformMXBeanProxy(
java.lang.management.ManagementFactory.getPlatformMBeanServer(),
"com.sun.management:type=HotSpotDiagnostic",
com.sun.management.HotSpotDiagnosticMXBean.class
).dumpHeap(fileName, live);
}
关于java - JVisualvm:应用程序终止后如何进行堆转储?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14194571/