堆栈中有内存是一种java 虚拟机提供的优化技术,将私有对象打散分配在栈上,提高性能,但无法在栈上分配大对象
转义分析和标量替换是堆栈上内存分配的基础
-只有在服务器模式下打开了服务器时,才能中止转义分析
-启用-XX: DoEscapeAnalysis转义分析
-XX: EliminateAllocations启用标量替换,以便将对象分散分配给堆栈
1 .创建对象并由jvm分配内存顺序
尝试在堆栈中分配、尝试在TLAB中分配、尝试在老年世代中分配、尝试在堆上在eden中分配
2 .逃逸分析:
为了分配给堆栈,首先需要分析判断对象的范围是否从函数体中脱离
3 .标量替换:允许将对象分散分配到堆栈中。 如果一个对象具有两个字段属性,则两个属性将作为局部变量分配给堆栈。
4.TLAB的全名是线程本地分配缓冲器,也就是线程专用的内存分配区域。 TLAB消耗eden区域的内存。