java - 初始化的java数组是进入栈还是堆?

标签 java arrays heap-memory stack-memory

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/

相关文章:

java - 如何在后台查看Cloudfundy Java客户端发送的请求和响应(Api Mocking)

java - 是否可以在 Java SE 环境中使用 javax.interceptor?

arrays - 在 shell 脚本中使用用户输入填充动态数组

jquery - 发布数组 jquery 序列化

java - Liferay 门户组件 : how to make ajax call to serveResource Method with Parameter

java - GWT 垃圾收集

arrays - 在数组结构内部调用 init

java - Servlet文件上传

Java 虚拟机堆调优参数

c - Structs 的堆和堆栈问题 - C 编程