假设我的Java应用程序正在以某个pid编号运行,我已经编写了程序来获取我的应用程序pid运行时,现在如何从我的Java程序中为此pid收集堆转储。我按了下面的链接,但是它将为所有活动对象提供堆转储,而这些活动对象并非特定于我的pid,是否有一种方法可以仅收集特定于我的pid的堆转储。假设我有pid号。
https://blogs.oracle.com/sundararajan/programmatically-dumping-heap-from-java-applications
答案 0 :(得分:0)
它似乎很简单:
jmap -dump:format=b,file=<file-path> <pid>
这来自我发现的文章的顶部,该文章还提供了其他转储堆的方式:
https://dzone.com/articles/how-to-capture-java-heap-dumps-7-options
如果您需要在Java代码中执行此操作,只需通过subprocess
模块调用此工具即可。上面的文章提供了一些替代方法。