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

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

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

    Chan Chen Coding...

    Eclipse Memory Analyzer介紹

    Eclipse Memory Analyzer是一個非常棒的堆內(nèi)存分析工具,是JDK自帶的堆分析工具jhat的一個非常好的替代品,能夠快速地定位Java內(nèi)存泄露的原因。
          可能有的同學(xué)會問,JVM不是號稱自動內(nèi)存管理,GC會自動垃圾回收,Java怎么會有內(nèi)存泄露,不會搞錯吧?當(dāng)然不會^_^, Java的內(nèi)存泄露不同于C/C++的內(nèi)存泄露,C/C++的內(nèi)存泄露是由于使用了堆內(nèi)存(new/malloc)卻沒有釋放(delete/free),導(dǎo)致無法再使用到該內(nèi)存片,而Java的內(nèi)存泄露是無謂地引用了一些垃圾的對象,譬如我們有一個Map對象,不斷往里面放對象,實際的場景可能是這些對象不會再被使用到,這時候,這部分?jǐn)?shù)據(jù)本身是垃圾的(因為不會再被使用),但實際上JVM會不會釋放它(因為還被Map)引用著,這就是Java的內(nèi)存泄露。
          在開始分析之前,我們先想想,在編程這個角度上,我們?nèi)绾伪苊舛褍?nèi)存泄露呢?實際上java.lang.ref這個包已經(jīng)為我們提供了一種問題解決方案。Java的引用有4種:強引用(Strong Reference)、軟引用(Soft Reference)、弱引用(Weak Reference)、幻影引用(Phantom Reference),關(guān)于這部分介紹的文章一大批,此處就不做深入,我們只需要知道如下的信息:

    • 強引用:除非將引用置為null,否則JVM不會對它垃圾,這是最常用的引用方式
    • 軟引用:在堆內(nèi)存不足的時候,GC會將其垃圾回收
    • 弱引用:每次GC都會將其垃圾回收
    • 幻影引用:跟沒有引用一樣,每次獲得的都是空的,沒有太多使用的意義,僅是為了追蹤對象在JVM的狀態(tài)

          一般對于大數(shù)據(jù)量的Cache信息或大對象,使用軟引用/弱引用是一種非常好的習(xí)慣,或者至少使用一種淘汰算法,避免在堆內(nèi)存擁擠大量的對象導(dǎo)致內(nèi)存不足,如下是兩個非常好的JDK默認(rèn)提供的HashMap替代者:

    • org.apache.commons.collections.map.ReferenceMap:支持強引用/軟引用和弱引用來存儲key/value對
    • org.apache.commons.collections.map.LRUMap:可以控制總?cè)萘?,采用LRU淘汰算法,將不常使用的數(shù)據(jù)淘汰出去

           介紹完一些背景,我們開始進(jìn)入主題。在開始分析之前,我們需要先dump下JVM的堆內(nèi)存信息(雖然Eclipse Memory Analyzer直接attach到JVM上獲取棧再分析,實際應(yīng)用價值不大)

    jmap –dump:file=test.bin {pid}

         現(xiàn)在我們有了test.bin這個堆文件,使用Eclipse Memory Analyzer打開,分析完堆,我們可以選擇“Leak Suspects Report”進(jìn)行內(nèi)存泄露分析。通過這個視圖,我們可以大概得到內(nèi)存泄露的初步結(jié)論
     
         Historygram也是一個非常常用的視圖,可以獲得堆中對象的數(shù)據(jù)統(tǒng)計,有排序、過濾的功能,非常好用
     
           Eclipse Memory Analyzer還包括如下功能:

    • 在Historygram視圖中右擊對象彈出的功能框中,可以獲得對象相互引用的關(guān)系的功能
    • Dominator Tree的視圖采用Tree的方式來展現(xiàn)整個棧對象相互引用的情況
    • OQL視圖支持使用OQL語言來查詢對象信息


    -----------------------------------------------------
    Silence, the way to avoid many problems;
    Smile, the way to solve many problems;

    posted on 2012-08-30 13:58 Chan Chen 閱讀(3847) 評論(0)  編輯  收藏 所屬分類: Scala / Java

    主站蜘蛛池模板: 亚洲尹人九九大色香蕉网站| 国产国产成年年人免费看片| 亚洲精品你懂的在线观看| 二级毛片免费观看全程| 亚洲国产av无码精品| 一个人看的免费视频www在线高清动漫 | eeuss影院www天堂免费| 亚洲人成国产精品无码| 99re6在线精品免费观看| 精品国产综合成人亚洲区| 无码精品人妻一区二区三区免费看| 亚洲自偷自偷精品| 最近中文字幕高清免费中文字幕mv | 爱情岛论坛亚洲品质自拍视频网站| 在线日韩av永久免费观看| 国产91成人精品亚洲精品| 久久青青草原亚洲av无码| 黄网站色视频免费在线观看的a站最新| 久久青草亚洲AV无码麻豆| 67194国产精品免费观看| 亚洲 欧洲 自拍 另类 校园| 免费国产真实迷j在线观看| 九九免费精品视频在这里| 亚洲小视频在线观看| 黄瓜视频高清在线看免费下载| 黄网站色视频免费看无下截| 亚洲精品一品区二品区三品区| 最近最新高清免费中文字幕| 国产v亚洲v天堂a无| 亚洲国产高清精品线久久| 无码A级毛片免费视频内谢| 亚洲宅男精品一区在线观看| 亚洲高清国产拍精品青青草原| 你懂得的在线观看免费视频| 亚洲图片校园春色| 亚洲成?Ⅴ人在线观看无码| 97在线视频免费公开观看| 日韩在线视精品在亚洲| 亚洲国产人成网站在线电影动漫| 天天摸天天碰成人免费视频| 搡女人免费免费视频观看|