在 CentOS 上调试 Java 程序,常见方式主要有命令行调试、远程调试、日志排查、性能/线程分析等。下面按使用场景给你一个实用指南。
java -version
which java
推荐使用 JDK(不是 JRE),因为调试工具(jstack、jmap、jdb)在 JDK 中。
适合简单程序或服务器无 GUI 环境。
javac -g Hello.java
jdb Hello
常用命令:
stop at Hello:10 在第10行断点runstep 单步locals 查看变量print x 打印变量cont 继续执行java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 -jar app.jar
参数说明:
address=5005 调试端口suspend=n 启动不阻塞(开发可用 y)⚠️ 注意防火墙:
firewall-cmd --add-port=5005/tcp --permanent
firewall-cmd --reload
jps -l
jstack <pid>
重点看:
BLOCKEDWAITINGdeadlockjmap -heap <pid>
jmap -histo <pid> | head
生成堆转储:
jmap -dump:format=b,file=heap.hprof <pid>
用 MAT / VisualVM 分析。
DEBUG 级别tail -f /var/log/app.log
jconsole
jvisualvm
可看:
(CentOS 服务器通常配合 X11 转发或本地连接)
| 场景 | 推荐方式 |
|---|---|
| 本地小测试 | jdb |
| 线上问题 | 远程调试 + jstack |
| 内存问题 | jmap + heap dump |
| 性能问题 | jvisualvm / async-profiler |
| 生产环境 | 日志 + 远程调试(谨慎) |
如果你愿意,可以告诉我:
我可以直接给你针对性调试命令。