【问题标题】:Does initialized java array go onto stack or heap?初始化的 java 数组是否进入堆栈或堆?
【发布时间】:2011-03-29 08:09:13
【问题描述】:
void someMethod() {
  byte[] array = { 0, 0 };
}

这个数组是存放在堆上还是栈上?

【问题讨论】:

    标签: java arrays heap-memory stack-memory


    【解决方案1】:

    您可以认为它总是在堆上。

    我相信一些智能 VM 能够在检测到对象安全的情况下对对象进行堆栈分配 - 但从概念上讲,它是在堆上的。特别是所有数组类型都是引用类型(即使元素类型是原始的),所以array变量(在栈上)只是对对象的引用,对象通常在堆上。

    特别是,想象一个小的变化:

    byte[] someMethod() { 
        byte[] array = { 0, 0 };
        return array;
    }
    

    如果数组是在栈上分配的,返回的引用必须引用什么?

    【讨论】:

      【解决方案2】:

      它将存储在堆中

      【讨论】:

        猜你喜欢
        • 2023-04-09
        • 2019-03-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-05-27
        • 1970-01-01
        • 2022-12-18
        • 2011-06-02
        相关资源
        最近更新 更多