總結
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 方法出...