java - JVisualvm:应用程序终止后如何进行堆转储?

标签 java profiling jvisualvm

我搜索了它,但没有找到任何方法在应用程序终止后获取堆转储。

从 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/

相关文章:

java - 多主机的数据库处理

java - Android:addContentView() 在屏幕状态改变之前不会出现

java - 类中的访问方法

node.js - Google App Engine 灵活获取对包动态创建的文件夹的访问权限?

java - 使用Jvisualvm检测内存泄漏

java - getJSONObject 方法有问题

profiling - OS X 上的 OCaml 时间分析

performance - 在 jvisualvm 中获取方法执行时间的分割

java - 分析期间无法访问菜单

javascript - 为什么 Gaze 消耗大量 CPU?