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

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

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

    無為

    無為則可為,無為則至深!

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

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

         什么是 Java heap dump

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

         如果你不懂啥是snapshot,點擊這里

         觸發(fā) Java heap dump

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

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


         分析 Java heap dump

         1:使用IBM HeapAnalyzer

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

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

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


       

         2:jhat

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

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


         3:Eclipse MemoryAnalyzer

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

        

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



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

    posted on 2011-10-04 22:31 草兒 閱讀(9454) 評論(0)  編輯  收藏 所屬分類: java
    主站蜘蛛池模板: 日韩成人免费在线| 亚洲一区二区电影| 免费国产污网站在线观看| 久久精品国产亚洲AV麻豆不卡| 1000部羞羞禁止免费观看视频| 亚洲av成人一区二区三区观看在线| 爱情岛论坛网亚洲品质自拍| 一级特黄aa毛片免费观看| 亚洲AV日韩AV永久无码色欲| 亚洲情综合五月天| 午夜视频在线观看免费完整版| 久久久久久久久久免免费精品| 亚洲国产成人资源在线软件 | 羞羞网站免费观看| 成人A毛片免费观看网站| 亚洲欧洲校园自拍都市| 亚洲欧洲久久久精品| 无码国产精品一区二区免费式直播| 日本高清不卡中文字幕免费| 亚洲电影在线播放| 在线播放亚洲第一字幕| 久久久久免费看黄A片APP| 久久青青草原国产精品免费| 性色av极品无码专区亚洲| 亚洲人成网址在线观看| av无码东京热亚洲男人的天堂| 成人免费在线看片| 成人免费一区二区三区| 久久亚洲中文无码咪咪爱| 亚洲经典在线观看| 亚洲乱码国产一区三区| 四虎影视精品永久免费网站| 我的小后妈韩剧在线看免费高清版| 在线观看片免费人成视频无码| 老司机午夜性生免费福利| 亚洲www在线观看| 久久精品亚洲精品国产色婷| 精品国产亚洲一区二区在线观看 | 蜜臀亚洲AV无码精品国产午夜.| 亚洲理论在线观看| 亚洲AV无码不卡在线播放|