日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java中的JavaCore/HeapDump文件及其分析方法

發布時間:2023/12/20 java 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java中的JavaCore/HeapDump文件及其分析方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

產生時間

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

有時致命問題發生后,Java應用不會死掉,還能繼續運行;

但有時致命問題發生,Java進程會死掉;

為了能夠保留Java應用發生致命錯誤前的運行狀態,JVM在死掉前產生兩個文件,分別為JavaCore及HeapDump文件。

有何區別

JavaCore是關于CPU的,而HeapDump文件是關于內存的。

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

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

怎么生成

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

在Unix/Linux上,產生這兩個文件的方法如下:

#?ps?-ef?|?grep?java??user?4616?4582?0?17:30?pts/0?00:00:00?grep?java??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??#?kill?-3?5580

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

如何分析

JavaCore文件

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

JavaCore文件的頭部有一個“Current Thread Details”標記,它記錄了JavaCore產生時系統運行的線程id,使用線程id在文件中查找線程的詳細信息,該信息中記載了線程運行哪個類的時候造成的JavaCore。

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

這樣結合當時的日志文件可以找到問題產生的原因。不過,這種方法只能找到不是內存溢出的錯誤,對于在core文件頭就有java/lang/outMemoryException的錯誤還是不知道是執行到哪個類的時候出現。

HeapDump文件

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


源自:http://www.codeceo.com/article/java-javacore-heapdump.html

總結

以上是生活随笔為你收集整理的Java中的JavaCore/HeapDump文件及其分析方法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。