Java虛擬機器的組成
Java虛擬機器主要分為以下五個區:
一、方法區:
1. 有時候也成為永久代,在該區內很少發生垃圾回收,但是並不代表不發生GC,在這裡進行的GC主要是對方法區裡的常量池和對型別的解除安裝
2. 方法區主要用來儲存已被虛擬機器載入的類的資訊、常量、靜態變數和即時編譯器編譯後的程式碼等資料。
3. 該區域是被執行緒共享的。
4. 方法區裡有一個執行時常量池,用於存放靜態編譯產生的字面量和符號引用。該常量池具有動態性,也就是說常量並不一定是編譯時確定,執行時生成的常量也會存在這個常量池中。
二、堆
java堆是所有執行緒所共享的一塊記憶體,在虛擬機器啟動時建立,幾乎所有的物件例項都在這裡建立,因此該區域經常發生垃圾回收操作。
三、虛擬機器棧:
1. 虛擬機器棧也就是我們平常所稱的棧記憶體,它為java方法服務,每個方法在執行的時候都會建立一個棧幀,用於儲存區域性變數表、運算元棧、動態連結和方法出口等資訊。
2. 虛擬機器棧是執行緒私有的,它的生命週期與執行緒相同。
3. 區域性變數表裡儲存的是基本資料型別、returnAddress型別(指向一條位元組碼指令的地址)和物件引用,這個物件引用有可能是指向物件起始地址的一個指標,也有可能是代表物件的控制程式碼或者與物件相關聯的位置。區域性變數所需的記憶體空間在編譯器間確定
4.運算元棧的作用主要用來儲存運算結果以及運算的運算元,它不同於區域性變數表通過索引來訪問,而是壓棧和出棧的方式
5.每個棧幀都包含一個指向執行時常量池中該棧幀所屬方法的引用,持有這個引用是為了支援方法呼叫過程中的動態連線.動態連結就是將常量池中的符號引用在執行期轉化為直接引用。
四、本地方法區
本地方法區和虛擬機器棧類似,只不過本地方法棧為Native方法(對非java語言呼叫的介面)服務。
五、程式計數器
記憶體空間小,位元組碼直譯器工作時通過改變這個計數值可以選取下一條需要執行的位元組碼指令,分支、迴圈、跳轉、異常處理和執行緒恢復等功能都需要依賴這個計數器完成。該記憶體區域是唯一一個java虛擬機器規範沒有規定任何OOM情況的區域。
相關文章
- JVM(二)Java虛擬機器組成詳解JVMJava虛擬機
- 深入學習Java虛擬機器——虛擬機器位元組碼執行引擎Java虛擬機
- jvm虛擬機器的五個組成部分解析JVM虛擬機
- Dalvik虛擬機器、Java虛擬機器與ART虛擬機器虛擬機Java
- 深入理解Java虛擬機器8 虛擬機器位元組碼執行引擎Java虛擬機
- java虛擬機器和Dalvik虛擬機器Java虛擬機
- Android 虛擬機器 Vs Java 虛擬機器Android虛擬機Java
- Java 虛擬機器之三:Java虛擬機器的記憶體結構Java虛擬機記憶體
- Java虛擬機器(JVM)Java虛擬機JVM
- Java虛擬機器(轉)Java虛擬機
- 深入理解虛擬機器之虛擬機器位元組碼執行引擎虛擬機
- Java 虛擬機器之五:Java位元組碼檔案結構Java虛擬機
- 備戰- Java虛擬機器Java虛擬機
- Java虛擬機器16:MetaspaceJava虛擬機
- Java虛擬機器面試題Java虛擬機面試題
- .Net框架 = Java虛擬機器?框架Java虛擬機
- java~graalVM虛擬機器JavaLVM虛擬機
- java虛擬機器的執行原理Java虛擬機
- java 虛擬機器的生命週期Java虛擬機
- Java基礎:Java虛擬機器(JVM)Java虛擬機JVM
- Java虛擬機器 —— 垃圾回收機制Java虛擬機
- Java虛擬機器 —— 類的載入機制Java虛擬機
- 詳解Java 虛擬機器(第②篇)——HotSpot 虛擬機器物件Java虛擬機HotSpot物件
- 《深入理解java虛擬機器》學習筆記4——Java虛擬機器垃圾收集器Java虛擬機筆記
- 虛擬機器位元組碼執行引擎虛擬機
- 深入理解java虛擬機器Java虛擬機
- java虛擬機器指令常量部分Java虛擬機
- Java 虛擬機器診斷利器Java虛擬機
- Java虛擬機器是什麼?Java虛擬機
- Java虛擬機器8:虛擬機器效能監控與故障處理工具Java虛擬機
- 《深入理解Java虛擬機器》個人讀書總結——JAVA虛擬機器記憶體Java虛擬機記憶體
- Java 虛擬機器永久代的垃圾收集Java虛擬機
- Java 虛擬機器類載入機制和位元組碼執行引擎Java虛擬機
- Java JVM——5.Java虛擬機器棧JavaJVM虛擬機
- Java虛擬機器1:什麼是JavaJava虛擬機
- java虛擬機器類載入機制Java虛擬機
- Java 虛擬機器類載入機制Java虛擬機
- Java虛擬機器04——垃圾收集器Java虛擬機