jvm之入门

1:当Eden内存不够时,会触发一次minor gc,过程是:通过gcRoot标记区分垃圾费垃圾,把非垃圾的obj copy到Survivor s0(s1)中,垃圾的obj直接释放掉,提供内存空间使用。

2:在obj放入Survivor时,会进行标识此obj一个属性“分代年龄”;当Eden“第二次”发送minor gc时,除重复1动作外,非垃圾copy-》s1,另外Survivor区s0还会判断下,之前存入的obj引用情况,再次进行标记“垃圾-非垃圾”,把空的当作垃圾释放掉,非垃圾直接copy-》s1区,并且obj“分代年龄+1”(年龄达到15 -》老年代);以后发生minor gc重复2的动作(s0和s1来回切换,年龄+1)

1002补充: 发生minor gc时,还可能存在一种现象:当Surivor的s0/s1放不下Eden的非垃圾对象,此时会把多出来的对象直接放到oldGen老年代中;放得下此现象不会出现。 所以总结下old Gen数据来源两个层:一是分代年龄大到15,另一个就是minor gc时,Surivor存不下

``````2.1  分代年龄存放在“对象头”中,一个Object不仅仅有“实例数据”还有header,如图

思考:"什么样的对象存在老年代" eg: static finally修饰的变量,数据库连接池,model,controller持久使用的

4: STW 当发生minor gc或 full gc时都将触发stw(stop the world); 


 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值