6

我正在尝试从我的 java 程序中生成一个堆转储,但无论我尝试什么,我似乎都无法弄清楚如何去做。

我下载了 Eclipse 内存分析器(插件然后是独立的),它应该能够从活动的 jre 进程中获取热转储。但它没有列出任何内容。文档列出了其他几种生成它们的方法,但我似乎无法使它们中的任何一个起作用,或者它们引用了我的系统上似乎不存在的东西。这同样适用于我在网上找到的任何东西......

该程序不会导致内存不足异常,它只是使用了比我预期的更多的资源。

我完全不知道它应该如何完成:/

任何帮助将不胜感激。

4

1 回答 1

8

您可以使用 Java JDK 的jmap.exe.

  • 你得到PID你的过程。
  • 导航到 %JAVA_HOME%/bin/ (JDK)
  • 在控制台(命令提示符)中输入jmap.exe -dump:format=b,file=C:\dump\dump.bin PID
    • 转储文件保存在您提供的路径中(在我的示例中是C:\dump\dump.bin

然后,您可以使用 NetBeans IDE 分析此转储。它有一个内置工具,只需导入dump.bin.

于 2013-06-16T17:11:58.670 回答