void someMethod() {
byte[] array = { 0, 0 };
}
这个数组是存放在堆中还是栈中?
最佳答案
您可以认为它总是在堆上。
我相信一些智能 VM 能够在检测到对象安全的情况下堆栈分配对象 - 但从概念上讲它在堆上。特别是,所有数组类型都是引用类型(即使元素类型是原始类型),所以 array
变量(在堆栈上)只是对对象的引用,对象通常继续堆。
特别是,想象一个小的变化:
byte[] someMethod() {
byte[] array = { 0, 0 };
return array;
}
如果数组分配在堆栈上,返回的引用必须引用什么?
关于java - 初始化的java数组是进入栈还是堆?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3474852/