Chr*_*ian 8 java arrays heap stack
void someMethod() {
byte[] array = { 0, 0 };
}
Run Code Online (Sandbox Code Playgroud)
这个数组会存储在堆中还是堆栈中?
Jon*_*eet 18
你可以把它想象成总是在堆上.
我相信一些智能虚拟机能够堆栈分配对象,如果他们能够检测到它是安全的 - 但从概念上来说它就在堆上.特别是,所有数组类型都是引用类型(即使元素类型是基本类型),因此array变量(在堆栈上)只是对对象的引用,而对象通常在堆上.
特别是,想象一个小小的变化:
byte[] someMethod() {
byte[] array = { 0, 0 };
return array;
}
Run Code Online (Sandbox Code Playgroud)
如果数组是在堆栈上分配的,那么返回的引用必须引用什么?