新聞中心
調(diào)優(yōu) | 別再說(shuō)你不會(huì) JVM 性能監(jiān)控和調(diào)優(yōu)了
作者:小明菜市場(chǎng) 2020-11-09 07:34:49
云計(jì)算
虛擬化 stat 虛擬機(jī)統(tǒng)計(jì)信息監(jiān)視工具用于查看虛擬機(jī)的堆內(nèi)存,內(nèi)存信息,類(lèi)的裝載和卸載信息等內(nèi)容。

為白河等地區(qū)用戶(hù)提供了全套網(wǎng)頁(yè)設(shè)計(jì)制作服務(wù),及白河網(wǎng)站建設(shè)行業(yè)解決方案。主營(yíng)業(yè)務(wù)為網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)、白河網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專(zhuān)業(yè)、用心的態(tài)度為用戶(hù)提供真誠(chéng)的服務(wù)。我們深信只要達(dá)到每一位用戶(hù)的要求,就會(huì)得到認(rèn)可,從而選擇與我們長(zhǎng)期合作。這樣,我們也可以走得更遠(yuǎn)!
本文轉(zhuǎn)載自微信公眾號(hào)「小明菜市場(chǎng)」,作者小明菜市場(chǎng) 。轉(zhuǎn)載本文請(qǐng)聯(lián)系小明菜市場(chǎng)公眾號(hào)。
Hi ! 我是小小,今天是本周的最后一篇,本篇將會(huì)著重講解關(guān)于 JVM 調(diào)優(yōu)和性能監(jiān)控方面的內(nèi)容
常用工具
常用工具主要有 JDK 自帶工具與 Arthas 這兩種工具。
JDK 自帶工具
jps 虛擬機(jī)進(jìn)程狀況工具
用于查看虛擬機(jī)進(jìn)程狀況的工具 命令示例
- $ jps
- 15236 Jps
- 14966 Example1
jstat 虛擬機(jī)統(tǒng)計(jì)信息監(jiān)視工具用于查看虛擬機(jī)的堆內(nèi)存,內(nèi)存信息,類(lèi)的裝載和卸載信息等內(nèi)容
顯示堆內(nèi)存信息
- jstat -gc 14966
- S0C S1C S0U S1U EC EU OC OU MC MU CCSC CCSU YGC YGCT FGC FGCT GCT
- 2048.0 2048.0 0.0 0.0 12800.0 9345.8 34304.0 26638.8 5248.0 4971.3 640.0 554.9 2 0.032 2 0.049 0.082
每隔 1000 毫秒打印堆內(nèi)存信息,打印十次
查看類(lèi)的裝載和卸載信息
- $ jstat -class 14966
- Loaded Bytes Unloaded Bytes Time
- 829 1604.4 0 0.0 0.37
Java 配置信息工具
查看JVM的啟動(dòng)參數(shù)
- $ jinfo -flags 26472
- VM Flags:
- -XX:CICompilerCount=3 -XX:InitialHeapSize=52428800 -XX:MaxHeapSize=52428800 -XX:MaxNewSize=17301504 -XX:MinHeapDeltaBytes=524288 -XX:New
jstack Java 堆棧跟蹤工具
即,對(duì)當(dāng)前的內(nèi)存生成相關(guān)的快照,用于保存相關(guān)的快照信息。
jmap Kava 內(nèi)存映射工具
用于查看內(nèi)存對(duì)象數(shù)量和內(nèi)存空間占用
jhat 生成 html 類(lèi)型的快照文件
- $ jhat dump.hprof
- Reading from dump.hprof...
- Dump file created Sun May 03 17:09:07 CST 2020
- Snapshot read, resolving...
- Resolving 42293 objects...
- Chasing references, expect 8 dots........
- Eliminating duplicate references........
- Snapshot resolved.
- Started HTTP server on port 7000
- Server is ready
啟動(dòng)后,在瀏覽器打開(kāi),http://localhost:7000/
jvisualvm & VisualVM: 堆轉(zhuǎn)儲(chǔ)快照分析工具
和上方命令一樣,直接導(dǎo)出文件,而不是網(wǎng)站
對(duì)象信息
線程信息
jconsole: JVM 性能監(jiān)控
啟動(dòng)用戶(hù)界面用于進(jìn)行性能監(jiān)控
啟動(dòng)成功以后
Arthas
阿里開(kāi)源的Java診斷工具
安裝
下載
- wget https://alibaba.github.io/arthas/arthas-boot.jarjava -jar arthas-boot.jar
解壓
- unzip arthas-packaging-bin.zip
安裝
- sudo su adminrm -rf /home/admin/.arthas/lib/*cd arthas./install-local.sh
啟動(dòng)
- ./as.sh
help
dashboard 實(shí)時(shí)數(shù)據(jù)面板
thread 線程信息
jad 反編譯類(lèi)
watch 數(shù)據(jù)觀測(cè)
調(diào)優(yōu)
部署方式
服務(wù)器經(jīng)常出現(xiàn)卡頓這是由于 Full GC 時(shí)間過(guò)長(zhǎng)導(dǎo)致,原因一般是
- 新生代太小,對(duì)象提前進(jìn)入老年代,觸發(fā) Full GC
- 老年代較大,一次 Full GC 時(shí)間較長(zhǎng)
解決方案是 調(diào)小 NewRatio 的值,盡可能的減少對(duì)象進(jìn)入老年代
調(diào)整內(nèi)存占用
直接內(nèi)存
調(diào)整 XX:MaxDirectMemorySize 避免發(fā)生 OutOfMemoryError: Direct buffer memory
線程堆棧
調(diào)整 -Xss 避免發(fā)生 StackOverflowError 或 OutOfMemoryError: unable to create new native thread
從 GC 角度解決新生代大量對(duì)象存活,Minor GC 時(shí)間過(guò)長(zhǎng)參數(shù)調(diào)整
- -XX:SurvivorRatio=65536
- -XX:MaxTenuringThreshold=0
- -XX:AlwaysTenure
關(guān)于作者
我是小小,生于二線,活在一線的程序猿,我是小小,我們下期再見(jiàn)。
分享題目:調(diào)優(yōu)|別再說(shuō)你不會(huì)JVM性能監(jiān)控和調(diào)優(yōu)了
鏈接分享:http://m.fisionsoft.com.cn/article/djhgscc.html


咨詢(xún)
建站咨詢(xún)
