GC調(diào)優(yōu)工具

1. jps

查看當前正在運行的所有java進程。

1. Jmap

用來查看內(nèi)存信息,實例個數(shù)及占用空間大小

1.1 查看某個java進程信息

jmap -histo pid > ./log.txt


jmap.png

其中:
(1)instances: 實例數(shù)量
(2)bytes: 占用空間大小
(3)class name: 類名稱

1.2 查看該進程堆信息

(1)jmap -heap pid


查看該進程堆信息.png

(2)查看堆內(nèi)存dump
jmap -dump:format=b, file=eureka.hprof pid

2. jstack

2.1 查看進程是否死鎖

使用命令:jstack pid

2.2 嘗試查找cpu占用最高的線程堆棧信息

(1)top -p pid找到java進程內(nèi)存信息


top -p pid.png

(2)按H,獲取每個線程的內(nèi)存信息


獲取每個線程的內(nèi)存信息.png

(3)找到內(nèi)存和cpu占用最高的線程tid,比如19664
(4)轉為十六進制得到

0x4cd0,此為線程id的十六進制表示
(5)執(zhí)行jstack 19663|grep
-A 10 4cd0,得到線程堆棧信息中4cd0這個線程所在的位置。

3. jinfo

查看正在運行的java應用的擴展參數(shù)。
(1)查看jvm相關參數(shù):
jinfo -flags pid

4. jstat

查看堆內(nèi)存各個部分的使用量,加載類數(shù)量。

4.1 垃圾回收統(tǒng)計

jstat -gc pid,查看垃圾回收器整體情況,以此評估GC壓力


jstat -gc pid.png
4.2 評估JVM運行情況

(1)檢查年輕代對象增長速度
jstat -gc pid 1000 10(每隔1秒執(zhí)行1次命令,共執(zhí)行10次)
(2)優(yōu)化思路
盡量讓每次Young GC后的存活對象小于Survivor區(qū)域的50%,都留存在年輕代里。盡量別讓對象進入老年
代。盡量減少Full GC的頻率,避免頻繁Full GC對JVM性能的影響。

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容