国产99福利精品视频|杨幂精品国产福利在线|国精品午夜福利视频不卡|欧美精品黄网站在线播放|精品国产乱码久久久久久久|国产大片中文字幕在线观看|国产肥熟女视频一区二区三区|国产乱码无码视频一区二区三区

Java程序的內(nèi)存泄漏與調(diào)試方法

來源:北大青鳥飛迅校區(qū)|發(fā)布時間:2013-04-29 15:35:16

  JDK本身為調(diào)試內(nèi)存泄漏問題提供了比較完善的工具。

  先用命令jps找出要調(diào)試的jvm的進程id(jps這個命令,就是ps命令前面加j,列出所有正在運行的jvm的進程id)。

  例如:jps

  輸出類似下面這樣:15976 java_app.jar 7586 startup.jar 22476 Jps 12248 Main 5437 Bootstrap

  假設(shè)我們要調(diào)試的進程id是15976.

  如果只是想簡單觀察一下堆內(nèi)存的使用情況,可以用命令jmap -histo:live 15976這個命令會輸出指定的jvm上當前各個Java類的實例數(shù)、占用的內(nèi)存大小和完整的類名。虛擬機內(nèi)部類的類名前面有"*"標記。

  如果想得到堆內(nèi)存使用的詳細情況,可以用命令jmap -dump:live,format=b,file=/tmp/java_app-heap.bin 15976

  這樣在/tmp目錄下得到一個java_app-heap.bin文件,其中保存的信息就是指定的jvm中堆內(nèi)存的使用詳情。這個二進制文件可以用JDK附帶的jhat(Java Heap Analysis Tool)來分析:

  jhat -J-Xmx326m /tmp/java_app-heap.bin

  這個工具相當耗內(nèi)存,如果出現(xiàn)了OutOfMemoryException的話,請加大-J-Xmx326m中指定的預(yù)留堆內(nèi)存大小再試。

  Jhat會解析堆內(nèi)存信息轉(zhuǎn)儲文件(上面用jmap生成的。bin文件),輸出大概像下面這樣:

  lewis@mgr $ jhat -J-Xmx326m /tmp/java_app-heap.bin Reading from /tmp/java_app-heap.bin……

  Dump file created Thu Sep 08 20:08:14 CST 2011 Snapshot read, resolving……

  Resolving 71327 objects……

  Chasing references, expect 14 dots……

  Eliminating duplicate references……

  Snapshot resolved. Started HTTP server on port 7000 Server is ready.

  注意最后兩行:堆內(nèi)存信息轉(zhuǎn)儲文件分析完畢后,jhat并不會將分析結(jié)果輸出為一個靜態(tài)文件。

  為了方便查找,以及在相關(guān)的類之間導(dǎo)航,jhat會啟動一個服務(wù),監(jiān)聽7000端口。這時候就可以用瀏覽器來瀏覽和分析結(jié)果了:在瀏覽器地址欄里輸入:

  http://localhost:7000

  里面的各個頁面都有很多鏈接,可以在相關(guān)的各個類及各種統(tǒng)計數(shù)據(jù)之間跳轉(zhuǎn),還是很方便的。

上一篇:Java編程中影響性能的一些特點
下一篇:怎樣為DB2 XML數(shù)據(jù)開發(fā)Java應(yīng)用程序

熱門話題

招生熱線: 4008-0731-86 / 0731-82186801

學(xué)校地址: 長沙市天心區(qū)團結(jié)路6號

Copyright © 2006 | 湖南大計信息科技有限公司 版權(quán)所有

湘ICP備14017520號-3

關(guān)注我們
在線咨詢
嘿,我來幫您!