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