Java 中的数组存储在 JVM 内存的哪个位置?
数组 是一个容器,可以容纳固定数量的同类型实体。数组的每个实体称为元素,每个元素的位置由一个整数(从 0 开始)值表示,称为索引。
示例
import java.util.Arrays;
public class ArrayExample {
public static void main(String args[]) {
Number integerArray[] = new Integer[3];
integerArray[0] = 25;
integerArray[1] = 32;
integerArray[2] = 56;
System.out.println(Arrays.toString(integerArray));
}
}输出
[25, 32, 56]
数组有两种类型:
- 一维数组:普通数组。
- 多维数组:存储数组的数组。
JVM 内存位置
JVM 有五个内存位置,即:
- 堆 - 运行时为对象(引用类型)分配存储空间。
- 栈 - 用于存储局部变量和部分结果。栈包含帧,并为每个线程分配一个帧。线程完成后,此帧也会被销毁。它还在方法调用和返回中发挥作用。
- PC 寄存器 - 程序计数器寄存器包含 JVM 当前正在执行的指令的地址。
- 执行引擎 - 它有一个虚拟处理器,解释器逐条解释字节码指令,以及一个 JIT(即时编译器)。
- 本地方法栈 - 它包含应用程序使用的所有本地方法。
数组的存储
如上所述,Java 中的引用类型存储在堆区。由于数组是引用类型(我们可以使用 new 关键字创建它们),因此它们也存储在堆区。

除了基本数据类型外,数组还存储引用类型:其他数组(多维数组)、对象。在这种情况下,对象数组/多维数组存储对象/数组的引用,这些引用指向对象/数组的位置。
例如,如果我们有一个名为 Std 的类,其构造函数接受学生的姓名,并且我们已经定义了此类的数组并如以下所示填充了它。
class Std {
private String name;
public Std(String name){
this.name = name;
}
}
public class Sample {
public static void main(String args[]) throws Exception {
//Creating an array to store objects of type Std
Std myArray[] = new Std[3];
//Populating the array
myArray [0] = new Std("Ravi");
myArray [1] = new Std("Raju");
myArray [2] = new Std("Ramu");
}
}数组 myArray 的内存可能如下所示:

广告
数据结构
网络
关系型数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP