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(线程分析)。
参考来源: