如何在Windows 平台获得WASv5.x/6.x的 Java HeapDump和JavaCore 诊断文件?

[转载]如何在Windows 平台获得WASv5.x/6.x的 Java HeapDump和JavaCore 诊断文件?

笔者注:其实在Unix或Linux系统中照样可以。因为这是通过WSADMIN去操作的,所以不分平台。

很不错的文章,不敢独享,特转载来分享给大家
原文出处:http://www.itpub.net/731657.html

具体步骤如下:
1、 设置Windows的环境变量,使WAS JVM在产生javacore的同时产生HeapDump文件(缺省只会产生 javacore)。点击windows桌面->鼠标右键-属性-进入系统属性对话框-进入高级页面-点击环境变量-在系统变量中-分别加入以下变量名和变量值
变量名 变量值
IBM_HEAPDUMP true
IBM_HEAP_DUMP true
IBM_HEAPDUMPDIR c:\

2、 注销当前用户,重新登录

3、 可以通过手工或windows 服务的方式启动WAS,如果使用手工方式,如下:
===For WAS5.x====
cd c:\WebSphere\AppServer\bin
startServer.bat server1
===For WAS6.x====
cd c:\WebSphere\AppServer\profiles\default\bin
startServer.bat server1

4、 WAS启动正常后,在C:\WebSphere\AppServer\bin或C:\WebSphere\AppServer\profiles\default\bin目录中通过以下命令让JVM产生JavaCore和HeapDump文件
键入wsadmin.bat命令,进入wsadmin管理命令行,键入如下代码:
set jvm [$AdminControl completeObjectName type=JVM,process=server1,*]

$AdminControl invoke $jvm dumpThreads

javacore.TIMESTAMP.NUMBER.txt  文件会自动在C:\WebSphere\AppServer或C:\WebSphere\AppServer\default\或您指定的目录中产生。

$AdminControl invoke $jvm generateHeapDump
生成文件类型名为.phd的文件,这个文件就是完整的堆的dump(此命令为我添加的,这个更有用)

补充:
IBM_HEAPDUMP_OUTOFMEMORY true
IBM_JAVADUMP_OUTOFMEMORY true
WAS在以上两项环境变量的设置下,一旦JVM出现内存申请失败抛出Out of Memory错误时,JVM将会自动产生JavaCore和HeapDump。

在生产环境下,谨慎使用此两项环境变量的设置,以防把文件系统撑爆。

你可能感兴趣的:(如何在Windows 平台获得WASv5.x/6.x的 Java HeapDump和JavaCore 诊断文件?)