欢迎来到天天文库
浏览记录
ID:3901609
大小:306.82 KB
页数:9页
时间:2017-11-25
《利用 java dump 进行 jvm 故障诊断》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、利用Javadump进行JVM故障诊断页码,1/9利用Javadump进行JVM故障诊断WebSphereApplicationServer故障诊断最佳实践级别:初级隋鹏飞(suipf@cn.ibm.com),软件工程师,IBM伍亦方(wuyifang@cn.ibm.com),软件工程师,IBM2009年3月11日本文将向读者介绍利用Javadump诊断JVMCrash和CPU饥饿等问题的方法和技巧,以便使用户更加全面的了解Javadump在故障诊断过程中的作用。引言更多关于Javadump进行JVM故障诊断的内容,请参考:对于大型j
2、ava应用程序来说,再精细的测试都难以堵住所有的漏洞,即便我们在测试阶段进行了大量卓有成效的工l在WASV6.1应用程序中跟踪作,很多问题还是会在生产环境下暴露出来,并且很难在测死锁:本文讲述了如何使用试环境中进行重现。JVM能够记录下问题发生时系统的运行WASV6.1中的线程转储工具状态并将其存储在转储(dump)文件中,从而为我们分析和诊了解您的系统环境,检查是否断问题提供了重要的依据。常见的转储文件包括Java发生死锁以及提取信息来帮助Dump,Heapdump和Systemdump。这里我们主要介绍避免或解决自己应用程序的死J
3、avadump在JVM故障诊断中的应用。锁情况。Javadump,也叫做Threaddump,是JVM故障诊断中最重要的转储文件之一。JVM的许多问题都可以使用这个文件本文对上面的文章做了进一步的补进行诊断,其中比较典型的包括线程阻塞,CPU使用率过充,介绍了如何利用Javadump诊高,JVMCrash,堆内存不足,和类装载等问题。作为一款断JVMCrash和CPU饥饿等问题轻量级(与Heapdump和Systemdump相比)的转储文的方法和技巧。件,Javadump的确是我们诊断JVM问题的首选。本文将系统的介绍使用Javadu
4、mp进行JVM故障诊断的方法和技巧,希望能够为大家提供一些帮助。Javadump文件的格式和内容Javadump通常是文本格式(.txt),因此可以通过一般的文本编辑器进行阅读,阅读时需要注意段与行的格式:段格式为了便于大家的分析,Javadump的每一段的开头,都会用“-----”与上一段明显的区分开来。而每一段的标题也会用“=====”作为标识,这样我们就能够很容易的找到每一段的开头和标题部分(如清单1)。清单1.Javadump段标题示例NULL--------------------------------0SECTIONTI
5、TLEsubcomponentdumproutineNULL===============================行格式http://www.ibm.com/developerworks/cn/websphere/library/techarticles/0...2010-03-14利用Javadump进行JVM故障诊断页码,2/9Javadump文件中,每一行都包含一个标签,这个标签最多由15个字符组成(如清单2中所示)。其中第一位数字代表信息的详细级别(0,1,2,3,4),级别越高代表信息越详细;接下来的两个字符是段标题
6、的缩写,比如,“CI”代表“Command-lineinterpreter”,“CL”代表“Classloader”,“LK”代表“Locking”,“ST”代表“Storage”,“TI”代表“Title”,“XE”代表“Executionengine”等等;其余部分为信息的概述。清单2.Javadump行标签和内容示例1TISIGINFODumpEvent"uncaught"(00008000)Detail"java/lang/OutOfMemoryError"received不同版本的JVM所产生的Javadump的格式可能会稍
7、有不同,但基本上都会包含以下几个方面的内容:lTITLE信息块:描述JAVADUMP产生的原因,时间以及文件的路径。lGPINFO信息块:GPF信息。lENVINFO信息块:系统运行时的环境及JVM启动参数。lMEMINFO信息块:内存的使用情况和垃圾回收记录。lLOCKS信息块:用户监视器(Monitor)和系统监视器(Monitor)。lTHREADS信息块:所有java线程的状态信息和执行堆栈。lCLASSES信息块:类加载信息。利用JavaDump进行JVM故障诊断由于Javadump文件包含的内容比较广泛,因此JVM的很多问
8、题都可以通过javadump进行诊断。这些问题主要包括线程阻塞,CPU使用率过高,JVMCrash,堆内存不足,和类装载等问题。诊断线程阻塞问题线程阻塞是我们在java多线程编程中经常遇到的问题。由于对后端有限资源的争用
此文档下载收益归作者所有