最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

基于JavaCore文件的深入分析

 更新時(shí)間:2013年05月04日 15:37:20   作者:  
本篇文章介紹了,對(duì)JavaCore文件的深入分析。需要的朋友參考下

 產(chǎn)生時(shí)間

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

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

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

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

有何區(qū)別

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

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

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

怎么生成

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

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

復(fù)制代碼 代碼如下:

    # 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進(jìn)程id ,然后再執(zhí)行‘kill -3 進(jìn)程號(hào)'的操作,等文件生成后再做一次同樣的操作,再產(chǎn)生一組文件。

如何分析

  JavaCore文件

  兩組文件在分析JavaCore時(shí)特別有效,因?yàn)樗梢钥闯鲈谙群髢蓚€(gè)時(shí)間點(diǎn)上,線程執(zhí)行的位置,如果發(fā)現(xiàn)先后兩組數(shù)據(jù)中同一線程都執(zhí)行在同一位置,則說明此處可能有問題,因?yàn)槌绦蜻\(yùn)行是極快的,如果兩次均在某一點(diǎn)上,說明這一點(diǎn)耗時(shí)是很大的,通過對(duì)這兩個(gè)文件進(jìn)行分析,查出原因,進(jìn)而解決問題。

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

復(fù)制代碼 代碼如下:

    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)


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

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

相關(guān)文章

  • Java?mybatis?開發(fā)自定義插件

    Java?mybatis?開發(fā)自定義插件

    這篇文章主要介紹了Java?mybatis開發(fā)自定義插件,MyBatis允許你在映射語(yǔ)句執(zhí)行過程中的某一點(diǎn)進(jìn)行攔截調(diào)用,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-08-08
  • 深入了解JAVA Jersey框架

    深入了解JAVA Jersey框架

    這篇文章主要介紹了JAVA Jersey的概念以及使用方法,文中講解非常詳細(xì),對(duì)大家的學(xué)習(xí)工作有所幫助,感興趣的朋友可以參考下
    2020-06-06
  • 詳解Spring Boot 屬性配置和使用

    詳解Spring Boot 屬性配置和使用

    本篇文章主要介紹了詳解Spring Boot 屬性配置和使用,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-06-06
  • 關(guān)于.java編譯成.class?與?.class反編譯成.java問題

    關(guān)于.java編譯成.class?與?.class反編譯成.java問題

    這篇文章主要介紹了關(guān)于.java編譯成.class?與?.class反編譯成.java問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • Kotlin與java8的SAM轉(zhuǎn)換對(duì)比(進(jìn)階)

    Kotlin與java8的SAM轉(zhuǎn)換對(duì)比(進(jìn)階)

    這篇文章主要介紹了Kotlin與java8的SAM轉(zhuǎn)換對(duì)比,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05
  • Eclipse中實(shí)現(xiàn)JS代碼提示功能(圖文教程)

    Eclipse中實(shí)現(xiàn)JS代碼提示功能(圖文教程)

    本文通過圖文并茂的形式給大家介紹了Eclipse中實(shí)現(xiàn)JS代碼提示功能,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下吧
    2017-11-11
  • Spring Boot 單元測(cè)試JUnit的實(shí)踐

    Spring Boot 單元測(cè)試JUnit的實(shí)踐

    JUnit是一款優(yōu)秀的開源Java單元測(cè)試框架,也是目前使用率最高最流行的測(cè)試框架,這篇文章主要介紹了Spring Boot 單元測(cè)試JUnit的實(shí)踐,感興趣的小伙伴們可以參考一下
    2018-11-11
  • JAVA多線程編程實(shí)例詳解

    JAVA多線程編程實(shí)例詳解

    這篇文章主要介紹了JAVA多線程編程,結(jié)合實(shí)例形式總結(jié)分析了多線程、鎖、線程池等相關(guān)原理及使用技巧,需要的朋友可以參考下
    2019-09-09
  • 一篇文章帶你了解spring事務(wù)失效的多種場(chǎng)景

    一篇文章帶你了解spring事務(wù)失效的多種場(chǎng)景

    在日常編碼過程中常常涉及到事務(wù),在前兩天看到一篇文章提到了Spring事務(wù),那么在此總結(jié)下在Spring環(huán)境下事務(wù)失效的幾種原因.
    2021-09-09
  • Java使用DualPivotQuicksort排序

    Java使用DualPivotQuicksort排序

    這篇文章主要介紹了Java使用DualPivotQuicksort排序,喜歡算法的同學(xué)一定要看一下
    2021-04-04

最新評(píng)論

永城市| 临夏市| 九江市| 德钦县| 河南省| 苍南县| 巨野县| 孝义市| 神池县| 佳木斯市| 西宁市| 屏东市| 鄢陵县| 平江县| 墨脱县| 巴林右旗| 河北省| 西乌珠穆沁旗| 朝阳县| 灯塔市| 耿马| 东丽区| 南木林县| 盐源县| 宜城市| 宣威市| 天全县| 通山县| 青冈县| 特克斯县| 墨江| 洱源县| 松滋市| 静乐县| 安义县| 读书| 马尔康县| 龙川县| 抚松县| 万山特区| 武陟县|