記一次生產環(huán)境永久代 permGen space 內存溢出

1、查看生產內存使用情況

jmap -heap pid
結果如下:
Heap Configuration:
   MinHeapFreeRatio = 40
   MaxHeapFreeRatio = 70
   MaxHeapSize      = 4294967296 (4096.0MB)
   NewSize          = 1610612736 (1536.0MB)
   MaxNewSize       = 1610612736 (1536.0MB)
   OldSize          = 5439488 (5.1875MB)
   NewRatio         = 2
   SurvivorRatio    = 8
   PermSize         = 805306368 (768.0MB)
   MaxPermSize      = 805306368 (768.0MB)
   G1HeapRegionSize = 0 (0.0MB)

Heap Usage:
New Generation (Eden + 1 Survivor Space):
   capacity = 1449590784 (1382.4375MB)
   used     = 1068927656 (1019.4088516235352MB)
   free     = 380663128 (363.02864837646484MB)
   73.73995942843963% used
Eden Space:
   capacity = 1288568832 (1228.875MB)
   used     = 1021910896 (974.5701751708984MB)
   free     = 266657936 (254.30482482910156MB)
   79.30588344387334% used
From Space:
   capacity = 161021952 (153.5625MB)
   used     = 47016760 (44.83867645263672MB)
   free     = 114005192 (108.72382354736328MB)
   29.198975304932336% used
To Space:
   capacity = 161021952 (153.5625MB)
   used     = 0 (0.0MB)
   free     = 161021952 (153.5625MB)
   0.0% used
concurrent mark-sweep generation:
   capacity = 2684354560 (2560.0MB)
   used     = 593305384 (565.8201065063477MB)
   free     = 2091049176 (1994.1798934936523MB)
   22.102347910404205% used
Perm Generation:
   capacity = 805306368 (768.0MB)
   used     = 91667304 (87.4207534790039MB)
   free     = 713639064 (680.5792465209961MB)
   11.3829106092453% used

上述查詢結果是寫文章臨時搞的,當時生產的Perm Generation已經達到96%;

首先分析永久代存放的東西 :用于存放靜態(tài)文件,如今Java類、方法等。
既然是這樣那么最有可能就是class文件,聯想到之前做的一個功能,加載不同版本的mysql和hana庫,這里使用了動態(tài)加載jar包驅動,那基本確定就是這里的問題了,當然后來也證實了 確實是這里的問題,

2、使用arthas 分析

在事故剛發(fā)生的時候,我是用了阿里的arthas工具進行分析,還是很香的
直接使用 jvm命令 查看到加載的class數目

image.png

還有一些其他的命令,具體查看官網:https://arthas.aliyun.com/doc/install-detail.html

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

友情鏈接更多精彩內容