`
shihuan830619
  • 浏览: 574575 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

IBM JDK生成Dump文件的方法

    博客分类:
  • jdk
jdk 
阅读更多
https://www.cnblogs.com/wyb628/p/8567610.html    (分析工具使用说明)
https://blog.csdn.net/namesliu/article/details/7018086     (JavaDump文件说明)
https://www.oschina.net/question/129540_23220    (生成javadump、heapdump、systemdump文件的方法)
http://www.codeweblog.com/websphere-was-generated-javacore/
https://www-01.ibm.com/support/docview.wss?uid=swg21384926    (was下生成heapdump文件的方法)
http://wpcertification.blogspot.com/2009/07/manually-generating-heap-dump.html    (was下生成heapdump文件的方法[写成脚本了])
https://www.ibm.com/support/knowledgecenter/SSYKE2_8.0.0/com.ibm.java.api.80.doc/com.ibm.jvm.ras/index.html
https://docs.oracle.com/javase/8/docs/jdk/api/attach/spec/index.html   (VirtualMachine API说明, 这个VirtualMachine类只在1.6以上的版本才有)
https://www.cnblogs.com/pengineer/p/5086428.html   (Hotspot JVM的常用选项)
https://docs.oracle.com/javase/8/docs/jre/api/management/extension/com/sun/management/HotSpotDiagnosticMXBean.html   (com.sun.management.HotSpotDiagnosticMXBean的API文档)
https://docs.oracle.com/javase/8/docs/jre/api/management/extension/com/sun/management/package-summary.html   (com.sun.management这个包的API[包括所有类])
com.sun.managementOperatingSystemMXBean可以获取操作系统信息



操作系统的转储文件可用于IBM和HotSpot JVM。对于IBM JVM,您可以使用jextract工具(JDK 自带)来创建转储文件,并
将它们直接加载到Memory Analyzer中;对于HotSpot JVM,您可以使用jmap工具从内核转储文件中提取堆Dump。
(我们将在文章后面内容中讨论这两种技术。)然而,在一些操作系统上,您必须保证这个进程在创建内核转储文件之前
具有足够的ulimit。如果ulimit不正确,那么您必须修改它们,并重新启动这个进程,才能够收集一个转储文件。


ibm jdk manual generate heapdump

static com.ibm.jvm.Dump.JavaDump()
static com.ibm.jvm.Dump.HeapDump()
static com.ibm.jvm.Dump.SystemDump()

static com.ibm.jvm.Dump.javaDumpToFile()
static com.ibm.jvm.Dump.heapDumpToFile()
static com.ibm.jvm.Dump.systemDumpToFile()


static com.ibm.jvm.Dump.javaDumpToFile(java.lang.String fileNamePattern)
static com.ibm.jvm.Dump.heapDumpToFile(java.lang.String fileNamePattern)
static com.ibm.jvm.Dump.systemDumpToFile(java.lang.String fileNamePattern)
static com.ibm.jvm.Dump.triggerDump(java.lang.String dumpOptions)

】static类型的方法不用初始化,在类里直接写com.ibm.jvm.Dump.HeapDump()就可以被执行,在需要生成HeapDump文件的时候手动触发。这个com.ibm.jvm.Dump.HeapDump()接口要借助Java Attach API来执行,因为这个接口没有类似pid这样的参数,Java Attach API中VirtualMachine类有attach()方法,这个attach可以接收pid参数,然后再调用VirtualMachine类的loadAgent方法把你自己写的jar加载到jvm里并运行,你自己写的类必须是main方法的类。

类似set PRE_CLASSPATH=%DOMAIN_HOME%/lib/antlr-2.7.6.jar
java -cp %DOMAIN_HOME%/lib/mydump.jar com.shihuan.dump.genete.MyHeapDump


AIX: gencore   这个命令必须有dbx组件支持。
Linux: gcore   这个命令必须有gdb组件支持。
上面的命令跟kill -6 pid是一样的作用,但kill -6 pid是系统级别的信号,不需要组件支持。


tcpdump不是IBM JDK的内容,但需要关注。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics