rep*_*vsd 2 stack jvm memory-management allocation
当运行时显然对象生存期限于某个范围时,JVM和.NET VM是否在堆栈上分配对象?
JVM就是这样做的.在适当的情况下,它实际上可以完全删除分配.
引用这篇文章.
Java语言没有提供任何在堆栈上显式分配对象的方法,但这一事实并不妨碍JVM在适当的地方仍然使用堆栈分配.JVM可以使用一种称为转义分析的技术,通过该技术,它们可以判断某些对象在其整个生命周期内仍然局限于单个线程,并且该生命周期受给定堆栈帧的生命周期的限制.可以在堆栈而不是堆上安全地分配这些对象.更好的是,对于小型对象,JVM可以完全优化分配,并简单地将对象的字段提升到寄存器中.
有关维基百科的逃逸分析的更多信息.