- 向栈分配 # 不要调参数
- 好处
- 不必GC
- 条件
- 线程私有小对象
- 无逃逸
- 可标量替换(基本类型替换整个对象)
- 好处
- 过大,分配到老年代
- 线程本地分配 # TLAB(Thread Local Allocation Buffer), 不要调参数
- 好处
- 为了减少线程争用
- 条件
- 小对象
- 占用eden, 默认每个线程占1%
- 好处
- 伊甸区
- s1,s2
- 次数 # 最大15(对象头上空间决定)
- Parallel Scavenge 15
- CMS 6
- G1 15
- 动态年龄
- eden + s1 复制到s2, 超过s2总内存一半时,年龄最大的对象进入老年代
- 分配担保
- YGC时survivor区空间不够, 直接进入老年代
- 次数 # 最大15(对象头上空间决定)
- GC清除或到老年代