- 首先尝试在栈上分配(栈上分配的好处就是随着出栈对象直接就被清除了),如果分配不下,进入堆内存。
- 进入堆内存之后,判断对象大小(通过-XX:PreTenureSizeThreshold这个参数设置大对象多大),如果是大对象,则会直接进入Old区。
- 如果是小对象,则会尝试在线程TLAB区分配,进入Eden区。
- 进入Eden区之后,经过一次YGC之后,活着的对象进入Survior0区。
- 再次YGC,Eden +Survior0区活着的对象进入Survior1区。
- 再次YGC,Eden +Survior1区活着的对象进入Survior0区。
- 对象年龄足够(Parallel Scavenge —>15 ,CMS—>5,G1——>15),进入Old区。
Java对象的分配过程
最新推荐文章于 2024-07-27 13:31:57 发布