Ubuntu Java日志中常见警告解析
一 日志来源与快速定位
二 常见警告与处置要点
内存提交失败(HotSpot 信息级警告)
典型日志:Java HotSpot™ 64-Bit Server VM warning: INFO: os::commit_memory(…) failed; error=‘Cannot allocate memory’ (errno=12)。含义为操作系统无法提交更多内存页(不等于物理内存耗尽,也可能是虚拟内存/交换区/ulimit 限制)。处置要点:
Java 堆内存不足(OutOfMemoryError)
典型日志:java.lang.OutOfMemoryError: Java heap space / Metaspace / unable to create new native thread。含义为堆/元空间/线程栈无法满足分配。处置要点:
被系统终止(OOM Killer 或 SIGKILL)
典型日志:/var/log/syslog 出现 “Out of memory: Kill process
JVM 崩溃但未生成 core dump
典型日志:hs_err_pid.log 末尾出现 “Failed to write core dump. Core dumps have been disabled.”。含义为JVM 崩溃但当前环境禁止生成 core。处置要点:
忽略已废弃/不生效的 JVM 选项
典型日志:Java HotSpot™ 64-Bit Server VM warning: ignoring option MaxPermSize=…; support was removed in 8.0。含义为JDK 版本不匹配导致选项被忽略。处置要点:
三 快速排查清单
第一步:确认日志归属
应用日志看WARN/ERROR与堆栈;JVM 致命错误看hs_err_pid.log;系统终止看**/var/log/syslog**或 journalctl。
第二步:检查资源与限制
free -h、swapon -s、ulimit -a、cat /proc/
第三步:调整 JVM 参数
结合负载与版本,合理设置**-Xms/-Xmx/-Xss/-XX:MaxMetaspaceSize**,必要时切换/优化GC。
第四步:保留现场与复现
开启core dump,保留hs_err_pid.log与业务日志,缩小复现步骤。
第五步:长期观测与优化
规范日志级别与输出目的地(便于检索与分析),必要时引入ELK/Graylog或VisualVM/JProfiler做性能与内存分析。