筆者注:其實(shí)在Unix或Linux系統(tǒng)中照樣可以。因?yàn)檫@是通過(guò)WSADMIN去操作的,所以不分平臺(tái)。
很不錯(cuò)的文章,不敢獨(dú)享,特轉(zhuǎn)載來(lái)分享給大家
原文出處:http://www.itpub.net/731657.html
具體步驟如下:
1、 設(shè)置Windows的環(huán)境變量,使WAS JVM在產(chǎn)生javacore的同時(shí)產(chǎn)生HeapDump文件(缺省只會(huì)產(chǎn)生 javacore)。點(diǎn)擊windows桌面->鼠標(biāo)右鍵-屬性-進(jìn)入系統(tǒng)屬性對(duì)話框-進(jìn)入高級(jí)頁(yè)面-點(diǎn)擊環(huán)境變量-在系統(tǒng)變量中-分別加入以下變量名和變量值
變量名 變量值
IBM_HEAPDUMP true
IBM_HEAP_DUMP true
IBM_HEAPDUMPDIR c:\
2、 注銷當(dāng)前用戶,重新登錄
3、 可以通過(guò)手工或windows 服務(wù)的方式啟動(dòng)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啟動(dòng)正常后,在C:\WebSphere\AppServer\bin或C:\WebSphere\AppServer\profiles\default\bin目錄中通過(guò)以下命令讓JVM產(chǎn)生JavaCore和HeapDump文件
鍵入wsadmin.bat命令,進(jìn)入wsadmin管理命令行,鍵入如下代碼:
set jvm [$AdminControl completeObjectName type=JVM,process=server1,*]
$AdminControl invoke $jvm dumpThreads
javacore.TIMESTAMP.NUMBER.txt??文件會(huì)自動(dòng)在C:\WebSphere\AppServer或C:\WebSphere\AppServer\default\或您指定的目錄中產(chǎn)生。
$AdminControl invoke $jvm generateHeapDump
生成文件類型名為.phd的文件,這個(gè)文件就是完整的堆的dump(此命令為我添加的,這個(gè)更有用)
補(bǔ)充:
IBM_HEAPDUMP_OUTOFMEMORY true
IBM_JAVADUMP_OUTOFMEMORY true
WAS在以上兩項(xiàng)環(huán)境變量的設(shè)置下,一旦JVM出現(xiàn)內(nèi)存申請(qǐng)失敗拋出Out of Memory錯(cuò)誤時(shí),JVM將會(huì)自動(dòng)產(chǎn)生JavaCore和HeapDump。
在生產(chǎn)環(huán)境下,謹(jǐn)慎使用此兩項(xiàng)環(huán)境變量的設(shè)置,以防把文件系統(tǒng)撐爆。