JVM 記憶體劃分總結

2021-09-03 03:01:17 字數 669 閱讀 3538

總結

1、所有執行緒共享的記憶體資料區:方法區,堆。而虛擬機器棧,本地方法棧和程式計數器都是執行緒私有的。

2、存放於棧中的東西如下:

2.1 每個執行緒包含乙個棧區,棧中只儲存基礎資料型別的物件和自定義物件的引用(不是物件)。物件都存放在堆區中。

2.2 每個棧中的資料(基礎資料型別和物件引用)都是私有的,其他棧不能訪問。

2.3 方法的形式引數,方法呼叫完後從棧空間**

2.4 引用物件的位址,引用完後,棧空間位址立即被**堆空間等待gc

3、存放於堆中的東西如下:

3.1 儲存的全部是物件,每個物件包含乙個與之對應的class資訊

3.2jvm只有乙個堆區(heap)被所有執行緒共享,堆區中不存放基本型別和物件引用,只存放物件本身

4、存放於方法區中的東西如下:

4.1 存放執行緒所執行的位元組碼指令

4.2 跟堆一樣.被所有執行緒共享.方法區包含:所有的class和static變數

4.3 常量池位於方法區中,見如下圖示說明

JVM記憶體劃分

從上圖可以看出,jvm記憶體區域可以簡單的劃分為方法區,堆區,虛擬機器棧,本地方法棧和程式計數器。上圖中,淺色的為執行緒共有的記憶體區域,深色的為執行緒私有的記憶體區域。可以看出,方法區和堆區是所有執行緒之間共享的記憶體區,而棧區和pc則是執行緒本身私有的,不能被其他執行緒所共享。我們簡單的說下各個...

JVM的記憶體區域劃分

jvm的記憶體區域劃分 在j a語言當中,記憶體是如何劃分的呢?由於j a程式是交由jvm執行的,所以我們在談j a記憶體區域劃分的時候事實上是指jvm記憶體區域劃分。在討論jvm記憶體區域劃分之前,先來看一下j a程式具體執行的過程 如上圖所示,首先j a源 檔案 j a字尾 會被j a編譯器編譯...

jvm記憶體模型 JVM記憶體模型詳情解析

一 結構圖 note string常量池 存在 堆記憶體中 二 各部分詳情解析 1 堆1 老年代 物件年齡 經過一次 monitor gc 年齡加1 15 的會存到 老年代 2 年輕代 3 常量池 string常量 儲存在堆中 2 虛擬機器棧 1 區域性變數表 2 運算元棧 3 動態鏈結 4 方法出...