以下两个声明之间有什么区别吗?
int arr[] = new int [5];
Run Code Online (Sandbox Code Playgroud)
和
int arr1[] = {1,2,3,4,5};
Run Code Online (Sandbox Code Playgroud)
是arr1在堆栈上还是在堆上声明?
从Java 6的某个地方开始,Hotspot JVM可以进行转义分析并在堆栈上而不是在垃圾收集堆上分配非转义对象.这导致生成的代码加速并减少垃圾收集器的压力.
Hotspot何时能够堆叠分配对象的规则是什么?换句话说,我什么时候可以依靠它来进行堆栈分配?
编辑:这个问题是重复的,但是(IMO)下面的答案比原始问题提供的答案更好.