java core xmxcl_WEBLOGIC HEAPDUMP、JAVACORE、SNAP、GC日志分析工具和方法

本文适用于IBM JDK

一、HEAPDUMP文件分析

使用IBM heapAnalyzer工具分析heap dump文件步骤:

1.如何产生java heap dump

当JVM中对象过多,java堆(java heap)耗尽时,就会产生java heap dump文件。另外,可以使用工具或命令显示地产生该文件。在命令行中程序执行过程中按ctrl+break可以产生,使用工具如,IBM HeapAnalyzer,Sap Memory Analyzer以及eclipse memory

analyzer都可以在指定状态产生dump文件。

2.如何分析java

heap dump文件

使用如java

–Xmx800m –jar ha395.jar启动工具,如果启动过程中发现控制台有java.lang.OutOfMemoryError出现,可以适当加大上面的数字(800),给予更多的空间。

然后“Open”产生的dump文件,打开画面如下,文件很大的话需要等待一段时间

ibm heapAnalyzer工具在打开时已经进行了基本的分析,上面全部完成后,会出现如下结果:

除了显示概要结果外,还生成了一棵树。这个画面先不要关,直到你不再需要这个dump了。

二、JAVACORE文件分析

1.IBM Thread and Monitor Dump

Analyzer for Java工具

启动工具C:\java\bin\java –Xmx200m –jar jca13.jar

java –Xmx500m –jar jca13.jar E:/javacore.20060228.171037.2084.txt output.html

直接生成output.html

2.Javacore文件产生原因

?自动生成

–IBMJVM

?OutOfMemory

?手动生成

–Kill -3

3.Javacore文件格式

–TITLE文件头部分

–GPINFO文件头部分

–ENVINFO文件头部分

–MEMINFO内存管理信息

–LOCKS锁信息

–THREADS线程信息

–CLASSES类信息

TITLE部分

?记录了引起Javadump的基本事件,时间和文件的名字

TITLE

subcomponent dump routine

===============================

Dump

Event "user" (00004000) received

Date:                 2011/04/02 at 00:56:01

Javacore

filename:

/soft/bea/user_projects/domains/omega/javacore.20110402.005601.34176.txt

GPINFO部分

?主要显示与操作系统方面有关的信息

0SECTION          GPINFO

subcomponent dump routine

NULL              ================================

2XHOSLEVEL     OS Level         : AIX 5.3

2XHCPUS           Processors -

3XHCPUARCH       Architecture

: ppc64

3XHNUMCPUS       How Many

: 24

ENVINFO部分

?显示在JRE级别的信息、应用服务器命令行启动信息及虚拟机的环境变量信息

ENVINFO

subcomponent dump routine

=================================

J2RE

5.0 IBM J9 2.3 AIX ppc64-64 build j9vmap6423-20071007

VM

build 20071004_14218_BHdSMr

JIT

enabled - 20070820_1846ifx1_r8

Running

as a standalone JVM

/usr/java5_64/bin/java

-Xmx3512m -Xms3512m -Xmn2450m -XX:PermSize=128m -Xmxcl25000

Java

Home Dir:   /usr/java5_64/jre

Java

DLL Dir:    /usr/java5_64/jre/bin

Sys

Classpath:

/usr/java5_64/jre/lib/vm.jar;/usr/java5_64/jre/lib/core.jar;/usr/j

UserArgs:

-Xjcl:jclscar_23

-Dcom.ibm.oti.vm.bootstrap.library.path=/usr/java5_64/jre/bin

-Dsun.boot.library.path=/usr/java5_64/jre/bin

-Djava.library.path=/usr/java5_64/jre/bin:/usr/java5_64/jre/bin:/usr/java

-Djava.home=/usr/java5_64/jre

MEMINFO部分

?显示内存管理分配的信息,包含堆的空闲空间、当前堆的大小、垃圾收集历史

------------------------------------------------------------------------

MEMINFO

subcomponent dump routine

=================================

Bytes

of Heap Space Free: 7902f578

Bytes

of Heap Space Allocated: db800000

Internal

Memory

segment          start            alloc            end               type     bytes

000000012F2DCCB0

00000001306CB8B0 00000001306DB8A4 00000001306DB8B0  01000040 10000

000000012F2DD7F0

0000000130664FB0 0000000130674FA0 0000000130674FB0  01000040 10000

000000012F2DD130

0000000130674FD0 0000000130684FBC 0000000130684FD0  01000040 10000

<<>>

GC History

00:56:01:541818000 GMT j9mm.65 -   LocalGC end: rememberedsetoverflow=0

causedremembereds

00:56:01:510589000 GMT j9mm.64 -   LocalGC start: globalcount=1003

scavengecount=3226 wea

00:56:01:510033000 GMT j9mm.63 -   Set scavenger backout flag=false

LOCK部分

?显示的与锁有关的信息

----------------------------------------------------------

LOCKS

subcomponent dump routine

===============================

Monitor

pool info:

Current total number of monitors: 2

Monitor

Pool Dump (flat & inflated object-monitors):

sys_mon_t:0x00039B40 infl_mon_t: 0x00039B80:

java/lang/Integer@004B22A0/004B22AC: Flat

locked by "DeadLockThread 1"

(0x41DAB100),

entry count 1

Waiting to enter:

"DeadLockThread 0"

(0x41DAAD00)

sys_mon_t:0x00039B98 infl_mon_t: 0x00039BD8:

java/lang/Integer@004B2290/004B229C: Flat

locked by "DeadLockThread 0"

(0x41DAAD00), entry count 1

Waiting to enter:

"DeadLockThread 1"

(0x41DAB100)

THREADS部分

?显示了所有的Java线程和栈跟踪方面的信息

"Signal Dispatcher" TID:0x41509200,

j9thread_t:0x0003659C, state:R,prio=5

(native

thread ID:5820, native priority:0, native policy:SCHED_OTHER)

at

com/ibm/misc/SignalDispatcher.waitForSignal(Native Method)

at

com/ibm/misc/SignalDispatcher.run(SignalDispatcher.java:84)

在第一行中的属性是线程的名字、线程标识符、JVM数据结构地址、当前状态和Java优先级。

在第二行中的属性是本地操作系统的线程ID、本地操作系统的优先级及本地操作系统调试机制。

?线程的状态可以是以下值:

?R - Runnable –线程在运行状态

?CW - Condition Wait –线程在等待状态,主要有以下原因引起的:

–调用了sleep()。

–线程在IO方面出现了阻塞。

–调用了wait(),在等待通知。

–通过调用join()使两个线程同步。

?MW – waiting for monitor entry线程在等待锁。

?S – Suspended –另一个线程暂停当前线程。

?Z – Zombie –线程被杀掉。

?P – Parked –线程终结但还没有回收。

?B – Blocked –线程阻塞,它在等待获取锁

CLASSES部分

?在类部分包含了类加载的概要信息和加载的类

–Application加载器(sun/misc/Launcher$AppClassLoader),它是extension加载器的子类.

–Extension加载器(sun/misc/Launcher$ExtClassLoader),它是bootstrap加载器的子类。

–Bootstrap加载器,众所周知它是系统加载器。

CLASSES

subcomponent dump routine

=================================

Classloader

summaries

12345678:

1=primordial,2=extension,3=shareable,4=middleware,5=system,6=trusted,7=application,8=delegating

p---st-- Loader *System*(0x50007498)

Number of loaded libraries 12

Number of loaded classes 3675

-x--st-- Loader

sun/misc/Launcher$ExtClassLoader(0x50018598), Parent *none*(0x00000000)

Number of loaded libraries 0

Number of loaded classes 29

-----ta- Loader

sun/misc/Launcher$AppClassLoader(0x500234C0), Parent sun/misc/Launcher$ExtClassLoader(0x50018598)

Number of loaded libraries 3

Number of loaded classes 11051

《------省略n行------》

ClassLoader

loaded classes

Loader *System*(0x50007498)

org/apache/xpath/objects/XStringForFSB(0x3E76F238)

[Ljavax/naming/Binding;(0x3E76FAC0)

《------省略n行------》

org/apache/xpath/functions/Function3Args$Arg2Owner(0x3E770CA0)

Loader

sun/misc/Launcher$AppClassLoader(0x500234C0)

weblogic/j2ee/descriptor/RelationshipsBean(0x38265960)

《------省略n行------》

weblogic/application/descriptor/AbstractMunger$3(0x3827F278)

三、SNAP文件分析

对跟踪文件进行格式化

跟踪格式化器(trace formatter) 是一个可以在任何平台上运行的Java程序,可以对来自任何平台的跟踪文件进行格式化。IBM SDK在core.jar中提供了这个格式化器,它还需要一个称为TraceFormat.dat的文件,其中包含格式化模板。这个文件在jre/lib中。可以用以下命令行启动跟踪格式化器:

java com.ibm.jvm.format.TraceFormat input_file

[output_file]

在这里,com.ibm.jvm.format.TraceFormat是跟踪格式化器类,input_file是要进行格式化的二进制跟踪文件的名称,output_file是可选的输出文件名。如果没有指定输出文件,那么默认的输出文件名是输入文件名加上.fmt。

四、GC日志分析

要产生GC日志需要添加参数 -verbose:gc

1.IBM Pattern Modeling and

Analysis Tool工具

启动工具:E:\>java -Xmx800m -jar ga439.jar

工具截图:

2.JCONSOLE工具

可以通过JDK自带的JCONSOLE图形化工具实时监控GC情况

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值