jvm专题系列-8、Java堆分析

本文详细探讨了Java中的内存溢出问题,包括堆溢出、永久区溢出、线程栈溢出和直接内存溢出。针对这些问题,提出了分析思路,如使用MAT工具进行内存分析,关注支配树、浅堆和深堆等关键指标。同时,建议通过增加堆大小、缩短session过期时间等方式来解决。此外,还介绍了使用VisualVM工具进行堆分析的方法,并给出了Tomcat OOM的实际案例分析。

1、内存溢出(OOM)的原因

在JVM中,内存区间包括(堆、永久区、线程栈、直接内存)

1.1 堆溢出

 

1.2 永久区

 

1.3 栈溢出

 

 

1.4 直接内存溢出

 

 

遇到内存溢出后,应该如何思考和处理问题?

2、MAT使用基础

 

 

 

 

 

2.1 支配树

 

2.2 浅堆(Shallow Heap)与深堆(Retained Heap)

 

 

2.3 显示入引用(incoming)和出引用(outgoing)

 

 

 

 

3、使用Visual VM分析堆

java自带的多功能分析工具,可以用来分析堆Dump

 

 

 

 

 

4、Tomcat OOM分析案例

 

 

 

 

 

 

 

 

 

解决方法:

1、OOM由于保存session过多引起,可以考虑增加堆大小

2、如果应用允许,缩短session的过期时间,使得session可以及时过期,并回收

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

步道师就是我

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值