Java程序宕机问题-jvm层面排查
1、配置jvm启动参数--宕机前输出堆转储文件和崩溃日志
首先配置jvm启动参数,找到Tomcat目录下的catalina.sh文件,改下面这句话:
#JAVA_OPTS="$JAVA_OPTS -Dorg.apache.catalina.security.SecurityListener.UMASK=`umask`"
-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/data/logs/dump.bin -XX:+PrintGCDetails -XX:ErrorFile=/data/logs/dump-error.log
宕机前输出dump堆转储文件和崩溃日志:
可以使用jprofiler分析堆转储文件或者https://heaphero.io/heap-index.jsp#header 在线分析堆转储文件。
2、运行过程中生成堆转储文件
执行命令,生成堆转储文件:jmap -dump:live,format=b,file=heap-dump.bin
3、分析线程CPU消耗情况
top命令查看Java进程号和Java进程CPU使用情况
查看Java进程中所有线程CPU使用情况:top -p java进程号 -H eg:
top -p 51334 -H
查看堆栈信息:jstack Java进程号
将消耗CPU最高的线程号转换为16进制:printf "%x\n" 线程号
最后通过16进制的线程号去堆栈信息中去查看此线程的堆栈信息即可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!