jvm堆内存分代

jvm堆内存中,大概可分为新生代,老年代,永久代(以前可以看作是方法区),由于现在的jvm已经去永久代了,所以实质上只有前两种

1.新生代 : 新生代又分为eden区域和两个survivor区域。默认大小比例为8:1. 大部分新生成的对象都直接分配在eden中,如果在新生代中执行一次gc,eden中     未被回收的对象就会进入survivor区域中,同时对象的年龄+1,经过多次gc后,如果年龄大于一个阈值,对象就会进入老年代。因为很多对象生命周期短暂,因此这部分的

gc往往能回收掉大部分内存(大概80%)。这段区域的gc成为minor gc或者young gc.

2.老年代:一般大对象或者新生代经过多次gc仍未被回收的对象进入这个区域。这部分的gc称为full gc,full gc执行时间长,同时由于gc期间要暂停一切正在执行的线程,所以如果

                 老年代区域的内存过大,一旦执行gc,中断的时间越长,给用户带来的体验就越差。

所以给jvm分配大内存的前提,是保证full gc执行的频率较低。一般十几个小时或一天执行一次full gc,这样可以通过在深夜执行定时任务的方式触发Full GC甚至自动重启应用服务器来保持内存可用空间在一个稳定的水平。控制Full GC频率的关键在于保障老年代的稳定。否则,内存分配越大,实际使用情况越糟糕。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值