JVM
说一下JVM中的分代回收
❒ 在java8时,堆被分为了两份:新生代和老年代(1:2) ❒ 对于新生代,内部又被分为了三个区域 ✔ 伊甸园区Eden,新生的对象都分配到这里 ✔ 幸存者区survivor(分成from和to) ✔ Eden区,from区,to区(8:1:1) 分代收集算法-工作机制 ✔ 新创建的对象,都会先分配到eden区 ✔ 当伊甸园内存不足,标记伊甸园与from(现阶段没有)的存活对象 ✔ 将存活对象采用复制算法复制到to中,复制完毕后,伊甸园和from 内存都得到释放 ✔ 经过一段时间后伊甸园的内存又出现不足,标记eden区域to区存活的对象,将存活的对象复制到from区 ✔ 当幸存区对象熬过几次回收(最多15次),晋升到老年代(幸存区内存不足或大对象会导致提前晋升)
一、堆的区域划分 1.堆被分为了两份:新生代和老年代[1:2] 2.对于新生代,内部又被分为了三个区域。Eden区,幸存者区survivor(分成from和to)(8:1:1) 二、对象回收分代回收策略 1.新创建的对象,会先分配到eden区(大对象直接分配到老年代) 2.当伊甸园内存不足,标记伊甸园与from(现阶段没有)的存活对象 3.将存活对象采用复制算法复制到to中,复制完毕后,伊甸园和from 内存都得到释放 4.经过一段时间后伊甸园的内存又出现不足,标记eden区域to区存活的对象,将其复制到from区 5、当幸存区对象熬过几次回收(最多15次),晋升到老年代(幸存区内存不足或大对象会提前晋升)