1.编译器通过逃逸分析判断对象是在栈上分配还是堆上分配,如果是堆上分配则进入下一步。(开启逃逸分析需要设置jvm参数)
2.如果tlab可以放下该对象则在tlab上分配,否则进入下一步。
3.重新申请一个tlab,再尝试存放该对象,如果放不下则进入下一步。
4.在eden区加锁,尝试在eden区存放,若存放不下则进入下一步。
5.执行一次Young GC。
6.Young GC后若eden区仍放不下该对象,则直接在老年代分配。
1.编译器通过逃逸分析判断对象是在栈上分配还是堆上分配,如果是堆上分配则进入下一步。(开启逃逸分析需要设置jvm参数)
2.如果tlab可以放下该对象则在tlab上分配,否则进入下一步。
3.重新申请一个tlab,再尝试存放该对象,如果放不下则进入下一步。
4.在eden区加锁,尝试在eden区存放,若存放不下则进入下一步。
5.执行一次Young GC。
6.Young GC后若eden区仍放不下该对象,则直接在老年代分配。
本文标题:java对象分配过程
本文链接:https://www.haomeiwen.com/subject/vcqqrxtx.html
网友评论