Debian Java内存溢出处理步骤
一 快速定位与应急
top -p <PID>、free -h;jinfo -flags <PID>;jmap -heap <PID>;jstat -gc <PID> 1s;-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/var/log/heapdump.hprof,随后用VisualVM/Eclipse MAT分析占用最高的对象与引用链。二 常见根因与对应处理
-XX:MaxMetaspaceSize=…并排查类加载器泄漏(热部署/反射/字节码增强场景常见)。三 JVM参数与容器配置示例
-Xms2g -Xmx2g(建议初始与最大一致,减少动态扩展开销)-XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:InitiatingHeapOccupancyPercent=45-XX:MaxDirectMemorySize=512m -XX:MaxMetaspaceSize=512m-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/var/log/heapdump.hprof -XX:+PrintGCDetails -Xloggc:/var/log/gc.log/usr/share/tomcat9/bin/catalina.sh或/etc/default/tomcat9中设置环境变量,例如:
JAVA_OPTS="$JAVA_OPTS -Xms2g -Xmx2g -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/var/log/tomcat9/heapdump.hprof"MAVEN_OPTS或gradle.properties中设置-Xmx2g等。-XX:ThreadStackSize=256k(默认通常已足够,过大反而浪费内存)。四 系统层面检查与优化
free -h、top、jstat -gc;为关键实例配置VisualVM/JConsole远程监控。swapon -ssudo fallocate -l 4G /swapfilesudo chmod 600 /swapfilesudo mkswap /swapfile && sudo swapon /swapfile/etc/fstab添加/swapfile none swap sw 0 0五 最小可行排查清单
jinfo -flags <PID>、jmap -heap <PID>、jstat -gc <PID> 1s、开启并下载Heap Dump/GC日志。