目錄
- JVM記憶體區域
- 堆
- 方法區
- 程式計數器
- 虛擬機堆疊
- 本地方法堆疊
Java與C++之間有一堵由記憶體動態分配和垃圾收集技術所圍成的高墻,墻外面的人想進去,墻里面的人卻想出來,
圍城這個比喻過于形象!!!
JVM記憶體區域
上經典圖

【執行緒公有】:堆和方法區
【執行緒私有】:虛擬機堆疊,本地方法堆疊,程式計數器
堆
用于物件實體的記憶體分配,GC的主要區域,
方法區
存盤已被虛擬機加載的類資訊、常量、靜態變數,
運行時常量池:方法區的一部分,用于存盤字面量與符號參考,
-
字面量可以理解為實際值,int a = 8中的8 和 String a = "hello"中的hello都是字面量
-
符號參考是一個字串,對應唯一的類,方法,或者欄位(相當于唯一ID),
【符號參考轉換為直接參考】
在編譯時,比如People類的符號參考為com.simple.People,當類裝載器裝載People類后,符號參考被轉為實際記憶體地址,也就是直接參考,
程式計數器
針對執行緒而言,存放下一個將要執行的指令
虛擬機堆疊
以堆疊幀的方式存盤執行方法的相關資訊,
程式每執行一個方法,都會往虛擬機堆疊中壓入一個堆疊幀,
堆疊幀包括:
- 區域變數表:用于存放方法引數和方法內部定義的區域變數
- 運算元堆疊:包含任意的Java資料型別,為程式運算提供支持
- 動態連接:符號參考在運行時轉換為直接參考(靜態決議:符號參考在類加載時轉換為直接參考)
- 方法回傳地址:用于恢復方法被呼叫的位置
本地方法堆疊
與虛擬機堆疊類似,但存盤的是呼叫本地方法的相關資訊,
本地方法:java呼叫C,作業系統的功能
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/116774.html
標籤:Java
上一篇:java中的運算子
下一篇:java中的方法
