日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux下Java内存溢出排查

發布時間:2024/3/24 linux 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux下Java内存溢出排查 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1、查詢gc情況(每1秒鐘打印一次gc情況)

jstat -gcutil pid 1000:1

查詢結果含義:
S0:幸存區1占用率
S1:幸存區2占用率
E:Eden區占用率
O:老年區占用率
M:元數據區(java8,相當于java7及之前的永久代的概念)使用大小
ccs:壓縮后使用率
YGC:young gc 次數,
YGCT:young gc耗時
FGC:full gc次數
FGCT:full gc耗時
GCt:GC共耗時

2、查詢進程信息

#查詢占用內存的進程(shift+m排序) top #存活的對象占用內存前100排序 jmap -histo:live 41843 | head -n 100

3、查詢進程里面詳細信息

jmap -heap 41843

如果Jave類的內存異常則檢查代碼
如果發現頻繁的gc是因為新生代、老年代、永久代分配的大小有問題,則可以通過修改設置解決

eg:

java -Xmx3550m -Xms3550m -Xmn2g -Xss128k -XX:NewRatio=4 -XX:SurvivorRatio=4 -XX:PermSize=64M -XX:MaxPermSize=128M -XX:MaxTenuringThreshold=0

參數含義:

  • -Xmx3550m 堆最大容量(heap max size)
  • -Xms3550m 堆最小容量(heap min size)
  • -Xmn2g 年輕代大小
  • -Xss256k 每個線程棧容量大小(stack size)
  • -XX:NewRatio=4 年輕代(包括Eden和兩個Survivor區)與年老代的比值(除去持久代),設置為4,則年輕代與年老代所占比值為1:4,年輕代占整個堆棧的1/5;
  • -XX:SurvivorRatio=4 年輕代中Eden區與Survivor區的大小比值,設置為4,則兩個Survivor區與一個Eden區的比值為2:4,一個Survivor區占整個年輕代的1/6
  • -XX:PermSize=64M 初始分配的永生代容量
  • -XX:MaxPermSize=128M 永生代最大容量
  • -XX:MaxTenuringThreshold=0 設置垃圾最大年齡

-Xmn對系統性能影響較大,Sun官方推薦配置為整個堆的3/8;JVM內存大小=年輕代大小 + 年老代大小 + 持久代大小持久代一般固定大小為64m,所以增大年輕代后,將會減小年老代大小。

JDK5.0以后每個線程堆棧大小為1M,以前每個線程堆棧大小為256K。更具應用的線程所需內存大小進行調整。在相同物理內存下,減小這個值能生成更多的線程。但是操作系統對一個進程內的線程數還是有限制的,不能無限生成,經驗值在3000~5000左右;

-XX:MaxTenuringThreshold如果設置為0的話,則年輕代對象不經過Survivor區,直接進入年老代。對于年老代比較多的應用,可以提高效率。如果將此值設置為一個較大值,則年輕代對象會在Survivor區進行多次復制,這樣可以增加對象再年輕代的存活時間,增加在年輕代即被回收的概論。

總結

以上是生活随笔為你收集整理的linux下Java内存溢出排查的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。