利用jvisualvm分析JVM,进行性能调优
什么是jvisualvm?
jvisualvm是JDK自帶分析工具。
可分析JDK1.6及其以上版本的JVM運(yùn)行時(shí)的JVM參數(shù)、系統(tǒng)參數(shù)、堆棧、CPU使用等信息。可分析本地應(yīng)用及遠(yuǎn)程應(yīng)用。
在JDK1.6以上版本中自帶。
工具在哪找?
在jdk包中:%JAVA_HOME%binjvisualvm.exe
怎么用?
1.進(jìn)入JVM進(jìn)程
進(jìn)入工具后,在工具左側(cè)即可選中當(dāng)前運(yùn)行的JAVA進(jìn)程,雙擊可查看進(jìn)程詳情。
2.查看運(yùn)行環(huán)境及JVM參數(shù)
3.查看JVM垃圾回收、進(jìn)程等
主要是為了查看垃圾回收次數(shù),頻繁的垃圾回收對(duì)系統(tǒng)性能也有影響。
4.分析應(yīng)用性能
利用這個(gè)工具分析應(yīng)用性能效果杠杠的,主要是利用抽樣器統(tǒng)計(jì)每個(gè)線程中,每個(gè)方法的執(zhí)行時(shí)間,這樣就能看到一次請(qǐng)求過(guò)程中,到底是哪個(gè)方法/查詢導(dǎo)致響應(yīng)時(shí)間長(zhǎng)。
4.1點(diǎn)開(kāi)抽樣器,點(diǎn)擊CPU,進(jìn)行CPU抽樣
4.2抽樣一段時(shí)間后,點(diǎn)擊快照,對(duì)從點(diǎn)擊抽樣開(kāi)始的這段時(shí)間,進(jìn)行CPU使用的統(tǒng)計(jì)。
4.3然后就能看到這段時(shí)間里,每個(gè)方法被使用的總時(shí)間以及時(shí)間占比啦,調(diào)用堆棧可一直追蹤至native方法。
這樣就可以很輕松的分析出,到底是哪個(gè)方法占了我寶貴的時(shí)間!
5.分析遠(yuǎn)程應(yīng)用
如果要分析遠(yuǎn)程應(yīng)用,需要遠(yuǎn)程服務(wù)暴露JMX服務(wù),然后本地再用該工具進(jìn)行連接。所以需要對(duì)遠(yuǎn)程服務(wù)的JVM啟動(dòng)參數(shù)進(jìn)行配置。
5.1在JVM啟動(dòng)參數(shù)中增加JMX配置:
#建立鏈接的端口 JAVA_OPTS="-Dcom.sun.management.jmxremote.port=8090" #不啟用ssl JAVA_OPTS="-Dcom.sun.management.jmxremote.ssl=false $JAVA_OPTS" #不啟用登陸驗(yàn)證 JAVA_OPTS="-Dcom.sun.management.jmxremote.authenticate=false $JAVA_OPTS" #rmiServer JAVA_OPTS="-Djava.rmi.server.hostname=10.137.126.42 $JAVA_OPTS"#啟動(dòng)命令 java $JAVA_OPTS -jar jarName.jar >/dev/null 2>&1 &5.2注意服務(wù)器開(kāi)放端口
遠(yuǎn)程服務(wù)啟動(dòng)后,除配置端口外,還會(huì)開(kāi)放兩個(gè)隨機(jī)端口,本地服務(wù)還會(huì)訪問(wèn)這兩個(gè)隨機(jī)端口,所以在有網(wǎng)絡(luò)權(quán)限限制的時(shí)候,需要把本地 -> 服務(wù)器高位端口(10000-65535) 都申請(qǐng)?jiān)试S訪問(wèn)。
5.3最后本地遠(yuǎn)程添加主機(jī),建立JMX鏈接即可。
總結(jié)
以上是生活随笔為你收集整理的利用jvisualvm分析JVM,进行性能调优的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: python垃圾回收机制(GC)相关问题
- 下一篇: 汇编基本命令整理