線上運營的網站,jdk設定的引數如下:
JAVA_HOME=/usr/java/jdk1.8.0_201
JAVA_OPTS="$JAVA_OPTS -server
-Xms3072M -Xmx3072M
-Xmn500M
-XX:MaxMetaspaceSize=500M
-XX:MetaspaceSize=500M
-XX:+UseBiasedLocking
-XX:CompressedClassSpaceSize=128M
-XX:+UseParNewGC
-XX:ParallelGCThreads=8 -XX:+UseConcMarkSweepGC
-XX:-UseGCOverheadLimit
-XX:+CMSParallelRemarkEnabled
-XX:SurvivorRatio=16
-XX:CMSInitiatingOccupancyFraction=70 -XX:+UseFastAccessorMethods -Xss228k -XX:+UseConcMarkSweepGC -XX:+ExplicitGCInvokesConcurrentAndUnloadsClasses
-XX:MaxDirectMemorySize=1024M
隨著運營時間增長,記憶體增長很快,最高的時候能達到8,9G

試用MAT工具分析prof檔案如圖


大神們看看,這種應該是堆外記憶體泄漏了吧,創建了這么多物件,怎么能分析出來代碼哪里出的問題呢?Mat工具不是很資料
uj5u.com熱心網友回復:
可以用jdk自帶的jvisualvm工具,匯出溢位的應用的堆記憶體檔案,通過jvisualvm分析可以看物件存盤的值,來定位到具體存的是什么物件
然后再與代碼結合來排查定位問題;
加油
uj5u.com熱心網友回復:
你好,這種文章我也找了不少,查不出來轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/29462.html
標籤:Java EE
上一篇:Jvm是如何加載Java類的?
