Java应用内存溢出排查
Java应用 内存溢出&CPU占满 排查
- 1.获取异常进程ID
top -m
- 2.保存堆快照
jmap -dump:format=b,file=/data/logdir/dump.hprof [PID]
- 3.观察GC状况
# 采样10次(2秒/次)后结束, 5行1组输出
jstat -gcutil -t -h5 [PID] 2s 10
- 4.获取进程内线程详情, 观察异常线程ID
top -Hp [PID]
- 5.根据线程id的16进制过滤出JVM线程, 大致得知是哪块线程出问题
jstack 进程ID | grep (`printf '%x' 线程ID`)
-
6.利用EclipseMemoryAnalyzer分析, 导入堆快照, 选择
Leak Suspects
, 查看问题对象 -
7.利用Jdk自带JavaVisual导出快照后找到对应的类实例, 右键
显示最近的垃圾回收根节点
后选中实例右键在线程中显示
, 定位对象产生代码段。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~