1.問題
線上服務執行一段時間及時間,監控出現報警,近期出現固定時間段fullgc過多。
2.檢視虛擬機器狀態
jstat -gcutils ***xx 1000
命令檢視jvm狀態
檢視虛擬機器狀態發現fullgc次數多,但不是特別頻繁而且規律也不一致3.jmap命令抓取dump檢視虛擬機器各個模組大小,發現存在記憶體無法釋放
分析發現byte占用記憶體較多
雙擊檢視詳細占用發現為
this -
value: byte #5090
pool- class:org.glassfish.grizzly.memory.heapmemorymanager
heapbufferthreadlocalpool,
value: byte #5090
memorypool (thread object) - class: org.glassfish.grizzly.threadpool.defaultworkerthread, value: org.glassfish.grizzly.memory.heapmemorymanager
heapbufferthreadlocalpool #41
該記憶體區域為處理為處理request和reponse的記憶體區域
極少數的物件占用了絕大多數的記憶體空間,即存在大物件占用了大部分的記憶體空間,由於大物件直接進入老年代,造成ygc時無法**,只能通過fullgc的方式收回
專案full gc 排查
物件直接放入老年代條件 一般情況是四種,但是尤其以第一種 最多 1.新生代物件每經歷依次minor gc,年齡會加一,當達到年齡閥值會直接進入老年代。閥值大小一般為15 2.survivor空間中年齡所有物件大小的總和大於survivor空間的一半,年齡大於或等於該年齡的物件就可以直接進入老年代,而...
學習了!頻繁發生FullGC問題排查手段
如題,機器發生頻繁fullgc報警,如何定位原因?一般現象為cpu飆高,rt增加,另外很可能出現oom。當碰到這種現象時,如何定位 列印heap的概要資訊,gc使用的演算法,heap 堆 的配置及jvm堆記憶體的使用情況.jmap heap pid列印每個class的例項數目,記憶體占用,類全名資訊...
Linux 服務排查
root使用者下,操作以下5步 1 查網路,保證本機與對方互相通訊 ifconfig ipconfig ping 2 查linux的對應服務是否啟動,使服務的status保持running狀態 比如ssh etc init.d sshd status etc init.d sshd restart ...