如何从Java程序收集特定pid的堆转储

时间:2019-05-16 05:57:06

标签: java

假设我的Java应用程序正在以某个pid编号运行,我已经编写了程序来获取我的应用程序pid运行时,现在如何从我的Java程序中为此pid收集堆转储。我按了下面的链接,但是它将为所有活动对象提供堆转储,而这些活动对象并非特定于我的pid,是否有一种方法可以仅收集特定于我的pid的堆转储。假设我有pid号。

https://blogs.oracle.com/sundararajan/programmatically-dumping-heap-from-java-applications

1 个答案:

答案 0 :(得分:0)

它似乎很简单:

jmap -dump:format=b,file=<file-path> <pid> 

这来自我发现的文章的顶部,该文章还提供了其他转储堆的方式:

https://dzone.com/articles/how-to-capture-java-heap-dumps-7-options

如果您需要在Java代码中执行此操作,只需通过subprocess模块调用此工具即可。上面的文章提供了一些替代方法。