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

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

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

    posts - 241,  comments - 116,  trackbacks - 0
    最近無意間在網上看到了一個監控java程序內存使用的工具 - JProbe,馬上回想起那個有關內存溢出的難題,于是我就下載了JProbe8.0.0希望從分析內存入手找到我要的答案。軟件下載安裝后,在安裝目錄 里詳盡的用戶指南(懂點軟件和英語的人很快就能上手),主要是兩個步驟: 洛克王國暴角龍配招

    1.用JProbe Config工具根據提示生成J2SE或者J2EE程序的控制腳本(一個.jpl文件和一個.bat文件),在命令行里進入.bat文件所在的目錄,然后執行該批處理讓要監控的java程序跑起來

    2.運行JProbe Console工具,點擊“Attach to Session...”按鈕,彈出java程序的內存實時監控圖表“Runtime Summary”,我們主要是看“Data”卡片里的內容(注意:第一次使用該軟件可能會遇到一些小問題:比如發布為jar包的程序如果運行時會去讀配置 文件,從控制腳本啟動的話,可能會發生配置文件找不到的異常,解決辦法是:不要打jar包,直接就用文件夾發布;還有可能因為一些殺毒軟件的網絡防火墻導 致JProbe無法連接到控制腳本的session,造成監控圖表打不開,解決辦法是:取消防火墻對于JProbe訪問網絡的限制)
    可以設置要監視的包或者類,然后點擊“Refresh Runtime Data”按鈕刷新這些對象占用內存的情況,當你覺得某個類比較可疑的話,你可以在不斷的使用程序的過程中監視它的生命周期,看看它是否像預期的那樣在結 束了生命周期后占用的內存就被釋放。眾所周知:java的內存回收是自動進行的,無需程序員干預,我們稱其為垃圾回收,這個垃圾回收可能是不定期的,就是 當程序占用內存資源比較少的情況下可能jvm的垃圾回收頻率就比較低;反之,java程序消耗內存資源比較多的情況下,垃圾回收的頻率和力度就比較高,這 種垃圾回收的不確定性很可能會影響我們的判斷,但我們可以點擊JProbe監控界面右上方的“Request a Garbage Collection”(像一個垃圾桶的圖標)按鈕來向jvm發出垃圾回收的請求,等幾秒后再去點擊“Refresh Runtime Data”,這個時候如果那個預期應該已經銷毀的對象的類名還是沒有從監控界面下方的class列中消失或者其對象數量沒有減少的話(請多試幾次,中間可 以夾雜些其他增加程序內存使用的操作以確保jvm確實執行了垃圾回收),那恭喜你!90%的可能性你已經找到了程序的某個缺陷

    這個查找元兇的過程可能是相當耗時的,是對程序員的耐心的挑戰。我熬了一下午一晚上,功夫不負有心人,基本上把我那個小程序的所有內存溢出的漏洞 都找到并補上了。事實告訴我之前那個子窗體關閉后資源無法釋放的根本原因是:子窗體雖然調用了dispose()方法,但是子窗體對象的引用一直都在:或 者是被靜態HashMap引用、或者是它的內部子線程類沒有釋放、或者是它的某個事件監聽類沒有釋放(借用JProbe的火眼金睛一檢驗,發現問題真是一 大堆啊?。?,so.我們要徹底釋放某個對象占用資源的關鍵在于找到并釋放所有對它的引用!
    程序中造成內存溢出可能性最大的是HashMap,Hashtable等等集合類,尤其是靜態的,更是要慎之又慎?。?!它們引用的對象可能你感覺已經銷毀 了,其實很可能你忘記remove鍵值,而如果這些集合對象還是靜態的掛在其他類里面,那么這個引用可能一直都在,借用JProbe測試一下,結果往往出 人意料,解決辦法:徹底刪除鍵,remove、clear,如果允許最好把集合對象設為null

    對于不再使用的線程對象,如果要徹底殺了它,很多書上都推薦用join方法,我之前也是這樣做的,但后來借助JProbe工具我吃驚的發現這樣做 很可能要殺的線程仍舊好好的活在你日益增大的內存里,很可能調用了線程的sleep方法后用join方法就會有點問題,解決辦法:在join方法前再加一 句執行interrupt方法,不過這個時候可能會有新的問題:執行interrupt方法后你的線程類會拋InterruptedException, 上有政策下有對策,加一個開關變量做判斷就能完美解決,可參考下面的代碼:
    posted on 2011-04-15 15:20 墻頭草 閱讀(250) 評論(0)  編輯  收藏

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    人人游戲網 軟件開發網 貨運專家
    主站蜘蛛池模板: 亚洲精品成人片在线观看| 天天摸天天碰成人免费视频| 亚洲欭美日韩颜射在线二| 免费视频精品一区二区| 亚洲国产精品一区二区九九| 免费中文字幕视频| 国产亚洲人成网站在线观看| 国产精品免费一区二区三区| 亚洲人成影院在线无码按摩店| 9久热这里只有精品免费| 国产亚洲色婷婷久久99精品| 99免费观看视频| 亚洲av永久无码嘿嘿嘿| 永久免费看mv网站入口| 免费观看四虎精品成人| 亚洲欧洲日产国码无码网站 | 在线观看免费播放av片| 亚洲午夜福利在线观看| 99在线视频免费观看| 久久精品国产精品亚洲毛片| 男女做羞羞的事视频免费观看无遮挡| 中文字幕亚洲码在线| 成人伊人亚洲人综合网站222| 国产成人无码精品久久久久免费 | 国产真人无码作爱免费视频| 亚洲国产精品一区二区久久| 希望影院高清免费观看视频| 国产成人亚洲精品蜜芽影院| 亚洲精品你懂的在线观看| 青娱乐免费视频在线观看| 久久久久久亚洲精品无码| 自拍偷自拍亚洲精品情侣| 又大又硬又爽又粗又快的视频免费| 精品久久久久久亚洲精品| 亚洲国产成人久久综合一区77| a视频在线免费观看| 伊人久久五月丁香综合中文亚洲| 亚洲另类激情专区小说图片| xx视频在线永久免费观看| 久久久久一级精品亚洲国产成人综合AV区| 成人黄网站片免费视频 |