學習了!頻繁發生FullGC問題排查手段 Jmap arthas jmap文件分析 建議

如題,機器發生頻繁FullGC報警,如何定位原因?

一般現象爲CPU飆高,RT增加,另外很可能出現OOM。當碰到這種現象時,如何定位:

Jmap

打印heap的概要信息,GC使用的算法,heap(堆)的配置及JVM堆內存的使用情況.

jmap -heap pid

打印每個class的實例數目,內存佔用,類全名信息,VM的內部類名字開頭會加上前綴”*”. 如果live子參數加上後,只統計活的對象數量.

jmap -histo:live pid

輸出jvm的heap內容到文件,live子選項是可選的,假如指定live選項,那麼只輸出活的對象到文件.

jmap -dump:live,format=b,file=myjmapfile.txt pid

finalizerinfo 打印正等候回收的對象的信息

jmap -finalizerinfo pid

arthas

查看當前的jvm進程堆內存狀態

dashboard

watch系統中某個方法,某個屬性的值,嚴重對象當前狀態。

# watch 類全路徑  方法名   '屬性或者方法的全路徑引用'
watch demo.MathGame primeFactors 'target.illegalArgumentCount'
# 觀察方法的第一個參數值
watch demo.MathGame primeFactors params[0]

jmap文件分析

自帶的命令分析

jhat <heap-dump-file>

jvisuvm裝入,裝入時記得選hprof,有幾個不同選項,apps,hprof

建議

  • 代碼中使用無界隊列,如LinkedBlockingQuene一定要注意,最好設置長度限制
  • ThreadLocal用完記得remove對象

來源:https://juejin.im/post/6890815858155716615

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章