之前有提到过, 为了提高 GC 的回收效率, 对象实例的内存分配不一定必须存在于堆区中, 还可采用堆外分配. 而最常见的堆外分配就是采用逃逸分析筛选出未发生逃逸的对象, 在栈帧中分配内存空间.
逃逸分析: 就是分析出对象的作用域. 当一个对象在方法体内声明后, 该对象的引用被其他外部所引用时该对象就发生了逃逸, 反之就会在栈帧中为对象分配内存空间.
根据逃逸分析在栈帧中分配的对象内存, 不会使用 GC 进行垃圾回收. 因为栈会随着方法的开始而创建, 结束而销毁.
来源: http://www.bubuko.com/infodetail-3166443.html