在 CentOS 上查看 Java 程序日志和内存使用情况,可以从 日志文件、JVM 参数、系统命令、JVM 工具 几个层面来看。下面按常见场景给你梳理。
很多 Java 应用(如 Spring Boot)会记录内存或 GC 信息:
# 查看日志文件
tail -f /var/log/your-app/app.log
常见关键字:
OutOfMemoryErrorGC overhead limit exceededHeap memory如果启动参数里有:
-Xloggc:/var/log/java/gc.log
查看 GC 日志:
tail -f /var/log/java/gc.log
分析内容:
ps -ef | grep java
或
jps -l
top -p <pid>
或
ps -p <pid> -o pid,vsz,rss,cmd
说明:
查看堆内存和 GC:
jstat -gc <pid> 1000
示例输出字段:
查看内存使用率:
jstat -gcutil <pid> 1000
查看堆内存概况:
jmap -heap <pid>
导出堆快照(排查 OOM):
jmap -dump:live,format=b,file=/tmp/heap.hprof <pid>
⚠️ 注意:
如果服务器有桌面或可以端口转发:
jconsole <pid>
或
jvisualvm
如果是 Docker 容器:
docker stats
⚠️ Java 8 以前可能读不到容器内存限制,建议:
-XX:+UseContainerSupport
启动参数加:
-XX:+HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=/tmp/heapdump.hprof
top / ps 看内存是否异常jstat -gcutil 看 GC 频率jmap dump如果你能贴一下:
我可以直接帮你判断是 堆溢出、元空间溢出还是内存泄漏。