首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有没有办法使用ibm-jdk for linux进行实时堆转储?

有没有办法使用ibm-jdk for linux进行实时堆转储?
EN

Stack Overflow用户
提问于 2010-12-10 15:01:29
回答 4查看 9.2K关注 0票数 6

我知道在这个JVM上发生OutOfMemoryException时可以转储堆,但是是否可以使用jmapjconsole之类的工具请求实时转储

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-12-12 05:42:15

好的,我最终会回答我自己:应用程序有一个远程管理接口,所以我将实现一个调用com.ibm.jvm.Dump.HeapDump()方法的新命令。

票数 3
EN

Stack Overflow用户

发布于 2012-10-02 02:40:03

你需要知道有“系统”转储(基本上是操作系统核心文件)和“堆”,也就是可移植的堆转储(PHD)。后者没有那么有用,因为它们不包含实际数据。默认情况下,它们处于启用状态。

在AIX或Linux上,通常需要设置-Xdump:system (-Xdump:system:events=gpf+user的缩写)以允许kill -3 <pid>触发堆转储。

顺便说一句,您可以使用默认选项使用kill -ABRT <pid>。但是,这将终止您的JVM。

运行java -Xdump:what查看默认值,如下所示:

代码语言:javascript
复制
> /usr/java6/bin/java -Xdump:what -version

Registered dump agents
----------------------
-Xdump:system:
    events=gpf+abort+traceassert,
    label=/home/u0002824/core.%Y%m%d.%H%M%S.%pid.%seq.dmp,
    range=1..0,
    priority=999,
    request=serial
----------------------
...
java version "1.6.0"
Java(TM) SE Runtime Environment (build pap3260sr9fp2-20110627_03(SR9 FP2))

打开系统转储:

代码语言:javascript
复制
> /usr/java6/bin/java -Xdump:system -Xdump:what -version

Registered dump agents
----------------------
-Xdump:system:
    events=gpf+user+abort+traceassert,
    label=/home/u0002824/core.%Y%m%d.%H%M%S.%pid.%seq.dmp,
    range=1..0,
    priority=999,
    request=serial
----------------------
-Xdump:heap:
    events=systhrow,
    filter=java/lang/OutOfMemoryError,
    label=/home/u0002824/heapdump.%Y%m%d.%H%M%S.%pid.%seq.phd,
    range=1..4,
    priority=500,
    request=exclusive+compact+prepwalk,
    opts=PHD
----------------------
-Xdump:java:
    events=gpf+user+abort+traceassert,
    label=/home/u0002824/javacore.%Y%m%d.%H%M%S.%pid.%seq.txt,
    range=1..0,
    priority=400,
    request=exclusive+preempt
----------------------
-Xdump:java:
    events=systhrow,
    filter=java/lang/OutOfMemoryError,
    label=/home/u0002824/javacore.%Y%m%d.%H%M%S.%pid.%seq.txt,
    range=1..4,
    priority=400,
    request=exclusive+preempt
----------------------
-Xdump:snap:
    events=gpf+abort+traceassert,
    label=/home/u0002824/Snap.%Y%m%d.%H%M%S.%pid.%seq.trc,
    range=1..0,
    priority=300,
    request=serial
----------------------
-Xdump:snap:
    events=systhrow,
    filter=java/lang/OutOfMemoryError,
    label=/home/u0002824/Snap.%Y%m%d.%H%M%S.%pid.%seq.trc,
    range=1..4,
    priority=300,
    request=serial
----------------------
...

不要忘记在核心上运行jre/bin/jextract* .dmp文件。

票数 6
EN

Stack Overflow用户

发布于 2010-12-10 17:36:16

您有几个选项:

  • HotSpot Diagnostic MBean
  • Required settings to Generate Heapdumps
  • Using the -Xdump Option

这个列表并不是详尽的。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4406464

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档