jmap 文件解析_[Java基础] 使用JMAP dump及分析dump文件
http://zhumeng8337797.blog.163.com/blog/static/100768914201242410583187/
其中jmap是java自帶的工具
查看整個(gè)JVM內(nèi)存狀態(tài)
jmap -heap [pid]
要注意的是在使用CMS GC 情況下,jmap -heap的執(zhí)行有可能會(huì)導(dǎo)致JAVA 進(jìn)程掛起
查看JVM堆中對(duì)象詳細(xì)占用情況
jmap -histo [pid]
導(dǎo)出整個(gè)JVM 中內(nèi)存信息
jmap -dump:format=b,file=文件名 [pid]
jhat是sun 1.6及以上版本中自帶的一個(gè)用于分析JVM 堆DUMP 文件的工具,基于此工具可分析JVM HEAP 中對(duì)象的內(nèi)存占用情況
jhat -J-Xmx1024M [file]
執(zhí)行后等待console 中輸入start HTTP server on port 7000 即可使用瀏覽器訪問(wèn) IP:7000
eclipse Memory Analyzer
Eclipse 提供的一個(gè)用于分析JVM 堆Dump文件的插件。借助這個(gè)插件可查看對(duì)象的內(nèi)存占用狀況,引用關(guān)系,分析內(nèi)存泄露等。
http://www.eclipse.org/mat/
kill -3 [pid]
在Linux 上找到Java所在的進(jìn)程號(hào),然后執(zhí)行以上命令,線程的相關(guān)信息就輸出到console
jstack
jstack 是sun JDK 自帶的工具,通過(guò)該工具可以看到JVM 中線程的運(yùn)行狀況,包括鎖等待,線程是否在運(yùn)行
執(zhí)行 jstack [pid] ,線程的所有堆棧信息
"http-8080-10" daemon prio=10 tid=x0a949bb60 nid=0x884? waiting for monitor entry [...]
"http-8080-10" 這個(gè)線程處于等待狀態(tài)。 waiting for monitor entry 如果在連續(xù)幾次輸出線程堆棧信息都存在于同一個(gè)或多個(gè)線程上時(shí),則說(shuō)明系統(tǒng)中有鎖競(jìng)爭(zhēng)激烈,死鎖,或鎖餓死的想象。
“http-8080-11” daemon prio=10 tix=xxx nid=xxx in object.wait() [...]
java.lang.Thread.State:waiting (on object monitor)
該表示http-8080-11的線程處于對(duì)象的Wait 上,等待其他線程的喚醒,這也是線程池的常見用法。
“Low Memory Detector”daemon prio=10 tix=xx nid=xxx runnable [...] java.lang.Thread.State:runnable
表示“Low Memory Detector” 的線程處于Runable狀態(tài),等待獲取CPU的使用權(quán).
jvisualvm
一.Java VisualVM 概述
對(duì)于使用命令行遠(yuǎn)程監(jiān)控jvm?太麻煩?。?在jdk1.6?中?Oracle?提供了一個(gè)新的可視化的。?JVM?監(jiān)控工具?Java?VisualVM?。jvisualvm.exe?在JDK?的?bin?目錄下。
雙擊啟動(dòng)?Java?VisualVM?后可以看到窗口左側(cè)?“應(yīng)用程序?”欄中有“?本地?”、“遠(yuǎn)程?”?、“快照?”三個(gè)項(xiàng)目。
“本地?”下顯示的是在?localhost?運(yùn)行的?Java?程序的資源占用情況,如果本地有?Java?程序在運(yùn)行的話啟動(dòng)?Java?VisualVM?即可看到相應(yīng)的程序名,點(diǎn)擊程序名打開相應(yīng)的資源監(jiān)控菜單,以圖形的形式列出程序所占用的?CPU?、?Heap?、?PermGen?、類、線程的?統(tǒng)計(jì)信息。
“遠(yuǎn)程”?項(xiàng)下列出的遠(yuǎn)程主機(jī)上的?Java?程序的資源占用情況,但需要在遠(yuǎn)程主機(jī)上運(yùn)行?jstatd?守護(hù)程序
VisualVM分為?3?類,?本地?它會(huì)自動(dòng)偵測(cè)到,并顯示出來(lái)
雙擊Local?下的任一節(jié)點(diǎn),看到右邊的變化?,你可以監(jiān)控?CPU?,內(nèi)存,類,線程等運(yùn)行狀況,實(shí)時(shí)監(jiān)控服務(wù)器性能。
右鍵?VisualVM我們可以看到?Thread?Dump,?Heap?Dump
做?Thread?Dump?很快,馬上就可以看到結(jié)果
Heap?Dump要稍花費(fèi)一些時(shí)間(可以看到當(dāng)前?heap?里對(duì)象的數(shù)量及占用的比例,做?OOM?很好用)
對(duì)其功能不再做描述,可以查閱網(wǎng)上相關(guān)質(zhì)量,我們主要講的是如何使用?VisualVM?遠(yuǎn)程監(jiān)控。
總結(jié)
以上是生活随笔為你收集整理的jmap 文件解析_[Java基础] 使用JMAP dump及分析dump文件的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 关于python文件_关于python文
- 下一篇: 5.0安装没有costom mysql_