JVM堆

几乎所有的对象,都存放在堆中
堆是完全自动化管理的,通过垃圾回收机制
垃圾对象会自动清理,不需要显式的释放

堆的内存模型

垃圾收集机制的不同,堆内存结构可能不同

新生代,存放新生的对象,或者年龄不大的对象
老年区,存放老年对象,年龄比较大

对象年龄
对象没经过一次GC,年龄就会加1
一般,经过15次GC之后,还活着,也就是达到15岁之后,就会放到老年区

永久区,存放永久数据
这里写图片描述

新生代

分为edan区、S0区、S1区
也称为伊甸园区、from区、to区

From区、to区,也称为幸存取
是两块大小相等,并且,可以互换角色的空间

GC处理过程

伊甸园区

首先,对象存储在伊甸园区
经过一次GC之后,存放在幸存区

幸存区

幸存区包括S0、S1区,或者说from区、to区
再经过一次GC之后,对象从from区,到to区
再经过一次GC之后,对象从to区,到form区
再经过一次GC之后,对象从from区,到to区
如此反复……

直到对象的年龄到达15岁之后,就会被放到老年区
这也是,为什么幸存区中的S0、S1区
两个区大小相等,并且,可以互换角色

老年区

老年区满了,就会产生MajorGC,FullGC,进行养老区的内存清理
如果,执行完成FullGC之后,依然无法进行对幸存区中对象的保存,就会产生OOM异常——OutOfMemoryError

OutOfMemoryError

原因分析
JVM堆内存不够,内存溢出
1、JVM堆内存设置不够,可以通过参数调整
2、代码创建了大量的大对象,并且,长时间不能被GC回收
原因是栈中存在这些对象的引用,通过代码优化解决

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值