<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    無(wú)為

    無(wú)為則可為,無(wú)為則至深!

      BlogJava :: 首頁(yè) :: 聯(lián)系 :: 聚合  :: 管理
      190 Posts :: 291 Stories :: 258 Comments :: 0 Trackbacks

    為了分析java應(yīng)用的內(nèi)存泄漏,使用thread dump往往解決不了問(wèn)題。使用jstat【eg:jstat -gcutil pid 1000 5】工具查看運(yùn)行的java應(yīng)用的heap size,perm size ,survivor ratio等,當(dāng)時(shí)你無(wú)法知道是什么對(duì)象把堆填滿了。

         什么是 Java heap dump

          首先需要搞懂什么是java heap,java heap是分配給實(shí)例類(lèi)和數(shù)組對(duì)象運(yùn)行數(shù)據(jù)區(qū),所有java線程在運(yùn)行期間共享heap中的數(shù)據(jù)。Java heap dump相當(dāng)于java應(yīng)用在運(yùn)行的時(shí)候在某個(gè)時(shí)間點(diǎn)上打了個(gè)快照(snapshot)。

         如果你不懂啥是snapshot,點(diǎn)擊這里

         觸發(fā) Java heap dump

    有以下方法出發(fā)heap dump

    1. 使用$JAVA_HOME/bin/jmap -dump來(lái)觸發(fā),eg:jmap -dump:format=b,file=/home/longhao/heamdump.out <pid>
    2. 使用$JAVA_HOME/bin/jcosole中的MBean,到MBean>com.sun.management>HotSpotDiagnostic>操作>dumpHeap中,點(diǎn)擊 dumpHeap按鈕。生成的dump文件在java應(yīng)用的根目錄下面。
    3. 在應(yīng)用啟動(dòng)時(shí)配置相關(guān)的參數(shù) -XX:+HeapDumpOnOutOfMemoryError,當(dāng)應(yīng)用拋出OutOfMemoryError時(shí)生成dump文件。
    4. 使用hprof。啟動(dòng)虛擬機(jī)加入-Xrunhprof:head=site,會(huì)生成java.hprof.txt文件。該配置會(huì)導(dǎo)致jvm運(yùn)行非常的慢,不適合生產(chǎn)環(huán)境。


         分析 Java heap dump

         1:使用IBM HeapAnalyzer

        IBM HeapAnalyzer是一款免費(fèi)的JVM內(nèi)存堆的圖形分析工具,它可以有效的列舉堆的內(nèi)存使用狀況,幫助分析Java內(nèi)存泄漏的原因。

        下載解壓后有一個(gè)ha413.jar,執(zhí)行: java -Xmx512m -jar ha413.jar /home/longhao/heapdump.out

         執(zhí)行結(jié)果如圖所示:


       

         2:jhat

        jhat(Java Head Analyse Tool )是用來(lái)分析java堆的命令,可以將堆中的對(duì)象以html的形式顯示出來(lái),包括對(duì)象的數(shù)量,大小等等,并支持對(duì)象查詢語(yǔ)言O(shè)QL,分析相關(guān)的應(yīng)用后,可以通過(guò)http://localhost:7000來(lái)訪問(wèn)分析結(jié)果。

        示例: $JAVA_HOME/bin/jhat -J-Xmx512m /home/longhao/dump.out


         3:Eclipse MemoryAnalyzer

        Eclipse Memory Analyzer是一個(gè)快速并且功能強(qiáng)大的Java heap分析器,能夠幫助你查找內(nèi)存泄漏和減少內(nèi)存消耗。在File>Acquire Heap Dump>configure>HPROF jmap dump provider設(shè)置一下分析應(yīng)用的JDK,點(diǎn)擊相關(guān)應(yīng)用列表來(lái)生成heap dump并分析。

        

        在socket,nio中的有些API中,申請(qǐng)的內(nèi)存是直接向OS要的,在堆中分析內(nèi)存是查看不到的,可以通過(guò)-XX:MaxDirectMemorySize=<size>來(lái)設(shè)置應(yīng)用向OS直接申請(qǐng)的最大內(nèi)存數(shù)。



    凡是有該標(biāo)志的文章,都是該blog博主Caoer(草兒)原創(chuàng),凡是索引、收藏
    、轉(zhuǎn)載請(qǐng)注明來(lái)處和原文作者。非常感謝。

    posted on 2011-10-04 22:31 草兒 閱讀(9462) 評(píng)論(0)  編輯  收藏 所屬分類(lèi): java
    主站蜘蛛池模板: 亚洲欧洲国产经精品香蕉网| 无码人妻一区二区三区免费手机| 菠萝菠萝蜜在线免费视频| 中文字幕亚洲精品资源网| 亚洲国产综合专区在线电影| 亚洲精品美女久久久久99| 亚洲精品无码久久千人斩| 国产成人麻豆亚洲综合无码精品| 亚洲伊人成无码综合网 | 91在线手机精品免费观看| 免费精品一区二区三区第35 | 亚洲无人区码一二三码区别图片 | 亚洲电影免费观看| 亚洲成AV人片久久| wwwxxx亚洲| 亚洲AV一区二区三区四区| 国产亚洲福利一区二区免费看| 美美女高清毛片视频黄的一免费| 免费大片av手机看片高清| caoporn成人免费公开| 久久久久久免费一区二区三区| 午夜视频免费在线观看| 1024免费福利永久观看网站| 妞干网免费观看视频| 四虎在线播放免费永久视频 | 日本视频一区在线观看免费| 国产99视频精品免费观看7| 日日操夜夜操免费视频| 亚洲国产精品人人做人人爱| 亚洲精品成人无限看| 久久久亚洲裙底偷窥综合| 亚洲精品国产国语| 免费人成视频在线观看免费| 两个人看www免费视频| 国产成人免费午夜在线观看| 日韩视频免费一区二区三区| 亚洲综合色在线观看亚洲| 亚洲电影一区二区三区| 亚洲一本到无码av中文字幕 | 亚洲av无码片在线观看| 美女被爆羞羞网站免费|