JVisualVM連接
JVisualVM為JDK自帶工具傅寡,在安裝JDK后犬绒,在%JAVA_HOME%\bin目錄下可以找到該工具。
windows系統(tǒng)趁尼,運(yùn)行命令窗口輸入:jvisualvm堪侯,可以打開本機(jī)的jvisualvm工具嚎尤。
對(duì)應(yīng)linux系統(tǒng)可以遠(yuǎn)程訪問(wèn),需要添加JVM啟動(dòng)參數(shù)
-Djava.rmi.server.hostname=11.91.187.167 -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=10099 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false
Djava.rmi.server.hostname:填寫被監(jiān)控服務(wù)器ip
Dcom.sun.management.jmxremote.port:填寫未被占用的端口號(hào)
啟動(dòng)后伍宦,打開本地的JVisualVM工具诺苹,添加遠(yuǎn)程主機(jī)
錄入之前配置的端口號(hào)
連接成功:
JVM關(guān)鍵參數(shù)
概述頁(yè)簽中可以查看關(guān)于遠(yuǎn)程JMX的參數(shù)信息。JVM的參數(shù)眾多雹拄,與性能指標(biāo)相關(guān)的關(guān)鍵參數(shù):
- Java堆大小相關(guān)的JVM內(nèi)存參數(shù)
- -Xms:Java堆的初始化大小
- -Xmx:Java堆的最大值
- -Xss:Java線程堆棧大小
- 關(guān)于GC詳情的JVM內(nèi)存參數(shù)
- -verbose:gc 記錄GC運(yùn)行及運(yùn)行時(shí)間,一般用來(lái)查看GC是否是應(yīng)用的瓶頸
- -XX: +PrintGCDetails 記錄GC運(yùn)行時(shí)的詳細(xì)數(shù)據(jù)信息掌呜,包括新生對(duì)象的占用內(nèi)存大小及耗費(fèi)時(shí)間等
- -XX: +PrintGCTimeStamps 打印GC集的時(shí)間戳
- 設(shè)置JavaGC行為的JVM內(nèi)存參數(shù)
- -XX: +UseParallelGC 使用并行GC
- -XX: +UseConcMarkSweepGC 使用并發(fā)標(biāo)志掃描GC
- -XX: +UseSerialGC 使用串行GC
需要注意的是滓玖,當(dāng)部署的應(yīng)用非常關(guān)鍵且交易非常頻繁,應(yīng)該謹(jǐn)慎使用GC參數(shù)质蕉,因?yàn)镚C操作時(shí)耗時(shí)的势篡,需要在這之中找到平衡點(diǎn)。
JVM堆內(nèi)存使用監(jiān)控
如果已使用的堆內(nèi)存持續(xù)增長(zhǎng)模暗,且GC不能將已使用的堆內(nèi)存回收到正常水平禁悠,那么就有可能發(fā)送內(nèi)存溢出的情況。
通過(guò)JVsiualVM獲取堆DUMP
JVsiualVM能夠生成堆轉(zhuǎn)儲(chǔ)兑宇,統(tǒng)計(jì)某一特定時(shí)刻JVM中的對(duì)象信息碍侦,幫助測(cè)試人員分析對(duì)象的引用關(guān)系,是否有內(nèi)存泄露的情況等。
堆DUMP文件:
使用JVsiualVM獲取CPU性能分析
在抽樣器標(biāo)簽瓷产,單擊“CPU”按鈕啟動(dòng)一個(gè)CPU性能分析會(huì)話站玄,JVsiualVM會(huì)檢測(cè)應(yīng)用程序所有的被調(diào)用的方法。當(dāng)進(jìn)入一個(gè)方式時(shí)濒旦,線程會(huì)發(fā)出一個(gè)“method entry”的事件株旷,當(dāng)退出方法時(shí)同樣會(huì)發(fā)出一個(gè)“method exit”的事件,這些事件都包含了時(shí)間戳尔邓。然后JVsiualVM會(huì)把每個(gè)被調(diào)用方法的總的執(zhí)行時(shí)間和調(diào)用次數(shù)按照運(yùn)行時(shí)長(zhǎng)展示出來(lái)晾剖。
生成快照
抽樣器快照:當(dāng)有一個(gè)性能分析會(huì)話(CPU或者內(nèi)存)正在進(jìn)行時(shí),可以通過(guò)性能分析結(jié)果工具欄的“快照”按鈕生成抽樣器快照捕獲當(dāng)時(shí)的性能分析數(shù)據(jù)梯嗽。
生成的快照文件可以用于分析性能熱點(diǎn)齿尽,并查看其調(diào)用關(guān)系。
通過(guò)JVsiualVM獲取線程DUMP
JVsiualVM能夠?qū)φ谶\(yùn)行的本地應(yīng)用程序生成線程轉(zhuǎn)儲(chǔ)慷荔,把活動(dòng)線程的堆棧蹤跡打印出來(lái)雕什,幫助測(cè)試人員有效了解線程運(yùn)行的情況,診斷死鎖显晶、應(yīng)用程序癱瘓等問(wèn)題贷岸。生成線程DUMP后,可以在其中搜索是否存在BLOCK狀態(tài)的線程磷雇,分析其原因偿警。
生成的線程DUMP文件: