1. 程式人生 > >JVM 記憶體劃分簡單說明

JVM 記憶體劃分簡單說明

電腦的記憶體條由作業系統管理,JVM需要請求作業系統分配記憶體,JVM對分配的記憶體進行劃分,分成了5個區域。

1PC暫存器(程式計數器):記憶體和CPU之間互動

2本地方法棧:虛擬機器無法實現,呼叫作業系統中的功能。eg:window 複製,剪下...,利用這片記憶體實現。

3方法和資料的共享(方法區):執行時期 class檔案進入的地方

4方法棧(java棧):所有的方法執行的時候,進入的記憶體。eg:mian執行,就會建立一個棧幀,進入方法棧

5堆:儲存的容器和物件

我們主要關注3/4//5記憶體 ,舉例main方法執行,記憶體的變化。

public static void main(String[] args){
    int [] arr = new int[3]
}

  程式執行,class進入記憶體的方法和資料的共享區域,然後main進入方法棧的(壓棧執行)最底部區域,建立陣列容器,JVM在堆內開闢空間儲存陣列容器(new int[3]),返回陣列首地址給變數arr(引用型別),也可以說arr指向記憶體地址([email protected])。每次執行,記憶體地址可能是變化的,每次jvm開闢地址是不定的。