有没有办法使用 ibm-jdk for linux 进行实时堆转储?
我知道当 JVM 上发生 OutOfMemoryException 时可以转储堆,但是否可以使用 jmap
或 jconsole
等工具请求实时转储代码>?
I know that it's possible to dump heap when an OutOfMemoryException
is occuring on this JVM but is it possible to ask a live dump with tools like jmap
or jconsole
?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
您需要注意,存在“系统”转储(基本上是操作系统核心文件)和“堆”,又名便携式堆转储(PHD)。后面的内容不太有用,因为它们不包含实际数据。然而它们默认是启用的。
在 AIX 或 Linux 上 通常,您将设置
-Xdump:system
(-Xdump:system:events=gpf+user
的缩写)以允许kill -3 < ;pid>
触发堆转储。顺便说一句,您可以使用默认选项
kill -ABRT
。然而,这将终止您的 JVM。运行 java -Xdump:what 来查看默认设置,例如:
打开系统转储时:
不要忘记在核心上运行 jre/bin/jextract。 * .dmp 文件。
You need to be aware that there are "system" dumps (basically OS core files) and "heap" aka portable heap dumps (PHD). The later ones are less usefull as they do not contain actual data. They are hower enabled by default.
On AIX or Linux Typically you will set up
-Xdump:system
(short for-Xdump:system:events=gpf+user
) to allowkill -3 <pid>
to trigger a heap dump.BTW, you can with the default options use
kill -ABRT <pid>
. However this will terminate your JVM.Run
java -Xdump:what
to see your defaults, like:With turned on system dumps:
Do not forget to run
jre/bin/jextract
on the core. * .dmp files.您有几个选项:
此列表并不详尽。
You have a few options:
This list isn't exhaustive.
好的,我最终会回答自己:应用程序有一个远程管理界面,因此我将实现一个调用
com.ibm.jvm.Dump.HeapDump()
方法的新命令。OK, I'll finally answer to myself : the application has a remote admin interface, so I will implement a new command that is calling the
com.ibm.jvm.Dump.HeapDump()
method.我认为有一种工具像 JProfiler 。它可以很好地与 Eclipse 配合使用
I think there is one tool like JProfiler . it 'll nicely work with Eclipse