Java虛擬機以內存結構

本文主要作要點概況,做爲《深刻理解Java虛擬機》的讀書筆記,並整理了一些網絡上的博文。更方便理解JVMjava

程序計數器

  • 線程獨佔區
  • 能夠理解爲記錄當前線程所執行字節碼的行號
  • 惟一JVM規範中沒有規定任何OOM的狀況

JAVA虛擬機棧

  • 線程獨享區
  • java方法執行的動態內存模型
  • 棧幀:每一個方法的執行,都會建立一個棧幀,伴隨方法從建立到完成。存儲局部變量表、操做數棧、動態連接、方法出口
  • 局部變量表:存放編譯期可知的各類基本數據類型,引用類型、return address類型。局部變量表的內存空間是在編譯期完成分配的。進入一個方法棧幀分配多少內存是固定的。在方法運行期間不會改變局部變量表的大小

本地方法棧

  • 線程獨佔區
  • 執行native方法

java 堆

  • 線程共享區
  • 存放對象實例,垃圾回收期主要管理區域

方法區

  • 線程共享區
  • 存儲運行時常量池。已經被虛擬機加載的類信息、常量、靜態變量。即時編譯期編譯後的代碼等數據
    1. 類的信息:類的版本、字段、方法、接口
    2. 運行時常量池:存放 類文件編譯時生產的 各類字面量和符號引用。運行時也能夠新增常量如String intern
  • 方法區和永久代
  • 垃圾回收在方法去的行爲
  • 異常的定義

總結

相關文章
相關標籤/搜索