日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
JavaCore/HeapDump文件及其分析方法

產(chǎn)生時間

Java程序運行時,有時會產(chǎn)生JavaCore及HeapDump文件,它一般發(fā)生于Java程序遇到致命問題的情況下。

有時致命問題發(fā)生后,Java應(yīng)用不會死掉,還能繼續(xù)運行;

但有時致命問題發(fā)生,Java進(jìn)程會死掉;

為了能夠保留Java應(yīng)用發(fā)生致命錯誤前的運行狀態(tài),JVM在死掉前產(chǎn)生兩個文件,分別為JavaCore及HeapDump文件。

有何區(qū)別

JavaCore是關(guān)于CPU的,而HeapDump文件是關(guān)于內(nèi)存的。

JavaCore文件主要保存的是Java應(yīng)用各線程在某一時刻的運行的位置,即JVM執(zhí)行到哪一個類、哪一個方法、哪一個行上。它是一個文本文件,打開后可以看到每一個線程的執(zhí)行棧,以stack trace的顯示。通過對JavaCore文件的分析可以得到應(yīng)用是否“卡”在某一點上,即在某一點運行的時間太長,例如數(shù)據(jù)庫查詢,長期得不到響應(yīng),最終導(dǎo)致系統(tǒng)崩潰等情況。

HeapDump文件是一個二進(jìn)制文件,它保存了某一時刻JVM堆中對象使用情況,這種文件需要相應(yīng)的工具進(jìn)行分析,如IBM Heap Analyzer這類工具。這類文件最重要的作用就是分析系統(tǒng)中是否存在內(nèi)存溢出的情況。

怎么生成

這兩個文件可以用手工的方式生成,當(dāng)我們會遇到系統(tǒng)變慢或無響應(yīng)的情況,這時就以采用手工的方式生成JavaCore及HeapDump文件。

在Unix/Linux上,產(chǎn)生這兩個文件的方法如下:

 
 
 
 
  1. # ps -ef | grep java
  2. user 4616 4582 0 17:30 pts/0 00:00:00 grep java
  3. root 5580 1 0 Oct27 ? 00:02:27 /usr/bin/java -server -XX:PermSize=64M -XX:MaxPermSize=128m -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.util.logging.config.file=/usr/local/tomcat8090/conf/logging.properties -Djava.endorsed.dirs=/usr/local/tomcat8090/endorsed -classpath :/usr/local/tomcat8090/bin/bootstrap.jar -Dcatalina.base=/usr/local/tomcat8090 -Dcatalina.home=/usr/local/tomcat8090 -Djava.io.tmpdir=/usr/local/tomcat8090/temp org.apache.catalina.startup.Bootstrap start
  4. # kill -3 5580

首先,找出Java進(jìn)程id ,然后再執(zhí)行‘kill -3 進(jìn)程號’的操作,等文件生成后再做一次同樣的操作,再產(chǎn)生一組文件。

如何分析

JavaCore文件

兩組文件在分析JavaCore時特別有效,因為它可以看出在先后兩個時間點上,線程執(zhí)行的位置,如果發(fā)現(xiàn)先后兩組數(shù)據(jù)中同一線程都執(zhí)行在同一位置,則說明此處可能有問題,因為程序運行是極快的,如果兩次均在某一點上,說明這一點耗時是很大的,通過對這兩個文件進(jìn)行分析,查出原因,進(jìn)而解決問題。

JavaCore文件的頭部有一個“Current Thread Details”標(biāo)記,它記錄了JavaCore產(chǎn)生時系統(tǒng)運行的線程id,使用線程id在文件中查找線程的詳細(xì)信息,該信息中記載了線程運行哪個類的時候造成的JavaCore。

 
 
 
 
  1. NULL ------------------------------------------------------------------------
  2. 0SECTION TITLE   subcomponent dump routine
  3. NULL ===============================
  4. 1TISIGINFOOUTOFMEMORY received
  5. 1TIDATETIME Date: 2011/12/07 at 15:59:42
  6. 1TIFILENAME Javacore filename:/usr/WebSphere/AppServer/profiles/WCSProdNode2/javacore19202086.1323298782.txt
  7. NULL ------------------------------------------------------------------------
  8. 0SECTION XHPI subcomponent dump routine
  9. NULL   ==============================
  10. 1XHTIME Wed Dec 7 15:59:42 2011
  11. 1XHSIGRECV Unexpected   signal -1 received at   0x0 in . Processing   terminated.
  12. 1XHFULLVERSION J2RE 1.4.2 IBM AIX build ca142ifx-20090918 (SR13   FP2)
  13. NULL          
  14. 1XHCURRENTTHD Current Thread   Details
  15. NULL ----------------------
  16. 2XHCURRSYSTHD "WebContainer :   5" sys_thread_t:0x45FB5328
  17. 3XHNATIVESTACK Native Stack
  18. NULL ------------
  19. 3XHSTACKLINEERR unavailable -   stack address not valid
  20. :::
  21. :::
  22. 0SECTION XM subcomponent   dump routine
  23. NULL ============================
  24. NULL           
  25. 1XMCURTHDINFO Current Thread Details
  26. NULL ----------------------
  27. 3XMTHREADINFO "WebContainer : 5" (TID:0x70A8E260, sys_thread_t:0x45FB5328, state:R, native ID:0x5CC0)   prio=5
  28. 4XESTACKTRACE at   org.apache.taglibs.standard.tag.common.core.ImportSupport$ImportResponseWrapper.getString(Unknown   Source)
  29. 4XESTACKTRACE at   org.apache.taglibs.standard.tag.common.core.ImportSupport.acquireString(Unknown   Source)
  30. 4XESTACKTRACE at   org.apache.taglibs.standard.tag.common.core.ImportSupport.doEndTag(Unknown   Source)
  31. 4XESTACKTRACE at   com.ibm._jsp._part._jspx_meth_c_import_3(_part.java(Compiled Code))
  32. 4XESTACKTRACE at   com.ibm._jsp._part._jspx_meth_c_otherwise_3(_part.java(Compiled   Code))
  33. 4XESTACKTRACE at   com.ibm._jsp._part._jspx_meth_c_choose_4(_part.java(Compiled Code))
  34. 4XESTACKTRACE at   com.ibm._jsp._part._jspService(_part.java:3237)

這樣結(jié)合當(dāng)時的日志文件可以找到問題產(chǎn)生的原因。不過,這種方法只能找到不是內(nèi)存溢出的錯誤,對于在core文件頭就有java/lang/outMemoryException的錯誤還是不知道是執(zhí)行到哪個類的時候出現(xiàn)。

HeapDump文件

HeapDump文件是指定時刻的Java堆棧的快照,是一種鏡像文件。Heap Analyzer工具通過分析HeapDump文件,哪些對象占用了太多的堆棧空間,來發(fā)現(xiàn)導(dǎo)致內(nèi)存泄露或者可能引起內(nèi)存泄露的對象。


網(wǎng)站欄目:JavaCore/HeapDump文件及其分析方法
分享網(wǎng)址:http://m.5511xx.com/article/cdepdog.html