JVM的fullGC产生

1.关于jvm的FullGC,这篇博客讲的很好,转载过来

https://www.cnblogs.com/mzzcy/p/7257687.html

2.不同生命周期的GC策略,参考如下:

young generation:

生命周期很短的对象,归为young generation。由于生命周期很短,这部分对象在gc的时候,很大部分的对象已经成为非活动对象。因此针对young  generation的对象,采用copy算法,只需要将少量的存活下来的对象copy到to space。存活的对象数量越少,那么copy算法的效率越高。

young generation的gc称为minor gc。经过数次minor gc,依旧存活的对象,将被移出young generation,移到tenured generation

young generation分为: 
eden:每当对象创建的时候,总是被分配在这个区域 
survivor1:copy算法中的from space 
survivor2:copy算法中的to sapce (备注:其中survivor1和survivor2的身份在每次minor gc后被互换) 
minor gc的时候,会把eden+survivor1(2)的对象copy到survivor2(1)去。

tenured generation: 
生命周期较常的对象,归入到tenured generation。一般是经过多次minor gc,还 依旧存活的对象,将移入到tenured generation。(当然,在minor gc中如果存活的对象的超过survivor的容量,放不下的对象会直接移入到tenured generation) 
tenured generation的gc称为major gc,就是通常说的full gc。 
采用compactiion算法。由于tenured generaion区域比较大,而且通常对象生命周期都比较长,compaction需要一定时间。所以这部分的gc时间比较长。 
minor gc可能引发full gc。当eden+from space的空间大于tenured generation区的剩余空间时,会引发full gc。这是悲观算法,要确保eden+from space的对象如果都存活,必须有足够的tenured generation空间存放这些对象。

Permanet Generation: 
该区域比较稳定,主要用于存放classloader信息,比如类信息和method信息。 
对于spring hibernate这些需要动态类型支持的框架,这个区域需要足够的空间。 
这部分内容相对比较理论,可以结合jstat,jmap等命令(当然也可以使用jconsole,jprofile,gciewer等工具),观察jdk gc的情况。参考如下:

https://blog.csdn.net/hll174/article/details/50764513 
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值