Java虚拟机堆内存

堆内存

老年代占堆内存总大小的2/3,新生代1/3 ,Eden占新生代总大小的8/10,Survivor区的Form和To各占1/10
在这里插入图片描述

堆用来存放对象,新建的对象都会放入Eden区域,Eden占满了触发minor gc,字节码执行引擎执行垃圾回收,根据可达性算法回收垃圾,垃圾回收之后存活下来的对象放入Survivor的Form区域,对象的分代年龄+1(分代年龄存放在对象的Object Header中),第二次垃圾回收,清理Eden和Form区域,把Eden和Form存活的对象放入To区域。Form和To总有一块是空的,来回拷贝(使用复制算法)。
经历15次GC还存活的对象会被放入老年代(线程池,缓存对象,spring bean等)

可达性算法:先找到所有的GC ROOTS 根(局部变量/静态变量/本地方法栈等)作为起点,向下搜索引用的对象,找到的对象都标记为非垃圾对象。

老年代占满后触发full gc(回收堆和方法区),full gc会停掉应用线程(STW 咋瓦鲁多)。

对象分代年龄,锁状态等都存放在对象头中。
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值