java記憶體空間簡述

來源:互聯網
上載者:User

標籤:

 JVM的記憶體空間:

  • 1. 寄存器 (Registers):最快的儲存地區,位於處理器內部,由編譯器分配。主要作用是記錄當前線程所執行的位元組碼的行號。位元組碼解譯器工作時就是通過改變當前線程的程式計數器選取下一條位元組碼指令來工作。任何分支、迴圈、方法調用、判斷、異常處理、線程等待以及恢複線程、遞迴等都是通過這個計數器來完成。為了多線程的實現,每條線程都會有獨立的程式計數器來記錄當前指令的行號,以使得線程等待結束後能恢複到正確的位置執行。這塊記憶體也被稱為"線程私人"的記憶體。如果調用的方法是native的,則寄存器不儲存任何資訊。
  • 2. 棧 (Stack):JVM的棧是線程私人的,每個線程建立的同時都會建立JVM棧,JVM棧中存放的是當前線程中局部基本類型的變數(八種)、部分的返回結果以及Stack Frame,非基本類型的對象(參考型別)在JVM棧上只存放一個指向堆記憶體的地址,因此Java中的基本類型變數採用值傳遞,而參考型別對象採用引用傳遞。由於棧是線程私人的,因此記憶體配置上非常高效,且當線程運行完畢後,這些記憶體也就被自動回收了。當棧請求深度大於允許的深度時,會拋出StackOverflowError的錯誤,可以通過-Xss來指定站的大小。而如果記憶體不足時,會拋出OutOfMemoryError錯誤。
  • 3. 堆 (Heap):用來儲存物件執行個體以及數組值,所有通過new建立的對象記憶體都在這裡分配。堆中的對象記憶體需要等待GC(記憶體回收機制)進行回收,堆記憶體在32位作業系統上最大為2G,在64位作業系統上則沒有限制,其大小通過-Xms(啟動最小堆記憶體,預設實體記憶體的1/64,小於1G)和-Xmx(啟動最大堆記憶體,預設實體記憶體的1/4)來控制。預設當空餘堆記憶體小於40%時,JVM會增大堆的大小到-Xmx指定的大小,可通過-XX:MinHeapFreeRatio來指定這個比例。當空餘堆記憶體大於70%時,JVM會將堆記憶體的大小往-Xms指定的大小調整,可通過-XX:MaxHeapFreeRatio=來指定這個比例,但對於運行系統而言,為了避免頻繁的改變堆記憶體的大小,通常都會將-Xms和-Xmx的值設定成一樣。當堆中需要使用的記憶體超過其允許的大小時,會拋出OutOfMemory的錯誤資訊。
  • 4. 方法地區(MethodArea):在Java虛擬機器規範中,方法區被描述為堆的一個邏輯部分,但一般與堆區分開。存放了載入的類資訊(名稱、修飾符等)、類中的靜態變數、類中定義為final類型的常量、類中的Field資訊、類中的方法資訊,當開發人員在程式中通過Class對象中的getName、isInterface等方法來擷取資訊時,這些資料都來源於方法地區,可見方法地區的重要性。同樣,方法地區也是全域共用的,它在虛擬機器啟動時在一定的條件下也會被GC,當方法地區需要使用的記憶體超過其允許的大小時,會拋出OutOfMemory的錯誤資訊。在Sun JDK中這塊地區對應的為PermanetGeneration,又稱為持久代,預設為64M,可通過-XX:PermSize以及-XX:MaxPermSize來指定其大小。
  • 5. 運行時常量池(RuntimeConstant Pool):是方法區的一部分。類似C中的符號表,存放的為類中的固定的常量資訊、方法和Field的引用資訊等,其空間從方法地區中分配。類或介面的常量池在該類的class檔案被java虛擬機器成功裝載時分配。
  • 6. 本地方法堆棧(NativeMethod Stacks):與上述棧的作用非常相似,上述的棧主要為虛擬機器執行Java方法(位元組碼檔案)服務,而本地方法堆棧則是為Native方法服務。本地方法堆棧也會拋出StackOverflowError和OutOfMemoryError錯誤。

java記憶體空間簡述

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.