JVM虛擬機器記憶體結構簡析
JVM虛擬機器記憶體結構簡析
一、簡介
jvm(Java Virtual Machine),即我們的Java虛擬機器,其記憶體結構可以分為5個部分,即 堆、虛擬機器棧、本地方法棧、方法區、本地計數器。
二、堆
堆區主要存放物件例項及陣列,我們所new出來的物件都存在這個區域。
堆區是所有執行緒共享的,在虛擬機器啟動時建立。
堆區是GC(垃圾回收)最頻繁也是最主要的區域。
三、虛擬機器棧
虛擬機器棧即我們常聽說的棧,用於儲存區域性變數表、動態連結、運算元和方法出口等資訊。
虛擬機器棧是執行緒私有的,生命週期與執行緒一樣。
虛擬機器棧定義了兩種異常型別,StackOverFlowError(棧溢位)和 OutOfMemoryError(記憶體溢位)。
虛擬機器棧主要執行Java方法,方法執行時,建立一個棧幀,攜帶方法相關的區域性變數表、動態連結、運算元和方法出口等資訊入棧,方法結束,棧幀出棧。
四、本地方法棧
本地方法棧與虛擬機器棧執行機制相同,只不過一個是執行Java方法,一個是執行native方法。
在很多虛擬機器中(HotSpot),會將兩者一起使用。
五、方法區
方法區是全域性共享的。
方法區儲存了 類的資訊、建構函式、類中的欄位和方法、靜態變數、final常量 等資訊、
在Hotspot虛擬機器中,方法區對應持久代,很少被執行GC,一旦GC主要是對常量池的回收和已載入類的解除安裝。
六、程式計數器
程式計數器是執行緒私有的。
程式計數器是劃分在CPU上的,程式設計師無法操作。
它是JVM在解析 .class位元組碼檔案時,用來記錄執行到哪一行的一個記錄。
如果執行的是native方法,則計數器的值為空。
此記憶體區是唯一不會丟擲OutOfMemoryError的區域。
相關文章
- Java虛擬機器系列之Java記憶體結構簡介Java虛擬機記憶體
- Java 虛擬機器之三:Java虛擬機器的記憶體結構Java虛擬機記憶體
- 淺析虛擬機器記憶體管理模型虛擬機記憶體模型
- 深入理解JVM虛擬機器1:JVM記憶體的結構與消失的永久代JVM虛擬機記憶體
- jdk8:jvm虛擬機器記憶體模型JDKJVM虛擬機記憶體模型
- jvm記憶體區域之虛擬機器棧JVM記憶體虛擬機
- Java虛擬機器:JVM記憶體分代策略Java虛擬機JVM記憶體
- 深入理解JVM虛擬機器-JVM記憶體區域與記憶體溢位JVM虛擬機記憶體溢位
- 對jvm虛擬機器 記憶體溢位的思考JVM虛擬機記憶體溢位
- 面試準備之java虛擬機器記憶體結構面試Java虛擬機記憶體
- 關於虛擬機器記憶體和JVM記憶體設定的思考虛擬機記憶體JVM
- 【JVM之記憶體與垃圾回收篇】虛擬機器棧JVM記憶體虛擬機
- Java8虛擬機器(JVM)記憶體溢位實戰Java虛擬機JVM記憶體溢位
- Java虛擬機器(JVM)中的記憶體設定詳解Java虛擬機JVM記憶體
- Java虛擬機器詳解(二)------執行時記憶體結構Java虛擬機記憶體
- JAVA 虛擬機器可用記憶體Java虛擬機記憶體
- JVM記憶體結構JVM記憶體
- JVM(七):JVM記憶體結構JVM記憶體
- 《深入理解Java虛擬機器》個人讀書總結——JAVA虛擬機器記憶體Java虛擬機記憶體
- JVM掃盲-3:虛擬機器記憶體模型與高效併發JVM虛擬機記憶體模型
- 深入理解Java虛擬機器之JVM記憶體佈局篇Java虛擬機JVM記憶體
- java虛擬機器 jvm 出入java棧 棧空間記憶體分配Java虛擬機JVM記憶體
- 淺析Java虛擬機器結構與機制[轉]Java虛擬機
- 淺析JVM記憶體結構和6大區域JVM記憶體
- 《深入理解java虛擬機器》學習筆記1——Java記憶體結構Java虛擬機筆記記憶體
- jvm系列(二):JVM記憶體結構JVM記憶體
- 深入理解JVM虛擬機器-物件引用,GC與記憶體分配回收JVM虛擬機物件GC記憶體
- JVM虛擬機器和Oracle資料庫記憶體管理的學習JVM虛擬機Oracle資料庫記憶體
- JVM虛擬機器知識問答總結(簡單複習,快速回憶!)JVM虛擬機
- JVM 虛擬機器JVM虛擬機
- JVM虛擬機器JVM虛擬機
- Java虛擬機器之記憶體區域Java虛擬機記憶體
- Java虛擬機器4:記憶體溢位Java虛擬機記憶體溢位
- Java虛擬機器12:Java記憶體模型Java虛擬機記憶體模型
- JVM的基本結構和JVM的記憶體結構JVM記憶體
- Linux雲端計算技術學習:虛擬機器堆記憶體結構Linux虛擬機記憶體
- 理解JVM(一):記憶體結構JVM記憶體
- JVM記憶體結構劃分JVM記憶體