CentOS上解決Java內存溢出可按以下步驟操作:
定位問題
OutOfMemoryError: Java heap space
)。jstat -gcutil <PID> 1000
監控內存和GC情況,觀察老年代(O區)使用率是否持續升高。jmap -dump:live,format=b,file=heap_dump.hprof <PID>
生成堆轉儲文件,用MAT等工具分析大對象及引用鏈。調整JVM參數
-Xms512m -Xmx2g
(初始值和最大值建議一致)。-XX:MaxMetaspaceSize=256m
。-XX:UseG1GC
,并優化其參數(如-XX:MaxGCPauseMillis
)。-XX:HeapDumpOnOutOfMemoryError -Xloggc:/path/to/gc.log
。優化代碼
ArrayList
替代LinkedList
,若無需頻繁插入刪除)。系統層面調整
docker run -it --memory=2g YourImage
。free -h
查看內存使用情況。驗證與監控
jstat
或VisualVM持續監控內存使用,確認問題是否解決。工具推薦:MAT(內存分析)、VisualVM(實時監控)、jstack(線程分析)。
參考來源: