JVM記憶體模型基礎

2022-09-11 17:24:20 字數 1168 閱讀 7781

執行緒私有記憶體:

多執行緒共享記憶體:

程式計數器(program counter register)是一塊較小的記憶體空間,它可以看做是當前執行緒所執行的位元組碼的行號指示器。在虛擬機器的概念模型裡(僅是概念模型,各種虛擬機器可能會通過一些更高效的方式去實現),位元組碼直譯器工作時就是通過改變這個計數器的值來選取下一條需要執行的位元組碼指令,分支、迴圈、跳轉、異常處理、執行緒恢復等基礎功能都需要依賴這個計數器來完成。

j**a 堆(j**a heap)是j**a 虛擬機器所管理的記憶體中最大一塊。j**a 堆是被所有執行緒共享的一塊記憶體區域,在虛擬機器啟動時建立。此記憶體區域用來存放物件例項,幾乎所有的物件例項都在這裡分配記憶體,垃圾**器也主要在堆內工作。

j**a堆:分為新生代和老年代,

或者使用system.gc

老年代滿後

j**a heap詳解

j**a效能調優的目的:(調整full gc調整頻率以及響應時間)

工具:jvisualvm,jconsole

j**a 虛擬機器棧(j**a virtual mach1ne stacks)也是執行緒私有的,它的生命週期與執行緒相同。虛擬機器棧描述的是j**a 方法執行的記憶體模型:每個方法被執行的時候都會同時建立乙個棧幀(stack frame) 用於儲存區域性變數表、運算元棧、動態鏈結、方法出口等資訊。每乙個方法被呼叫直至執行完成的過程, 就對應著乙個棧幀在虛擬機器棧中從入棧出棧的過程。

方法出口:是指方法的呼叫者

區域性變數表:放置執行過程的數值

運算元棧:放置執行過程的數值

方法區(method area) 與j**a 堆一樣, 是各個執行緒共享的記憶體區域, 它用於存

儲已被虛擬機器載入的類資訊、常量、靜態變數、即時編譯器編譯後的**等資料。

JVM基礎學習(一) JVM記憶體模型

在j a高階知識的學習中,jvm都是避不過去的一關,我個人對於jvm的理解其實就是相當於在作業系統的外層再加了一層中間層,從來遮蔽了具體硬體之間的不同實現,使得j a實現了最重要的特性 一次編譯,處處執行。本分類中的內容都是基於 深入理解j a虛擬機器 中的內容以及網路上面部落格整理,外加自己的理解...

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

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

jvm記憶體模型

主要分為棧,堆,方法區,程式計數器 1.程式計數器 2.棧 stack 虛擬機器棧 每個執行緒獨生成乙個棧,執行緒中每呼叫乙個方法生成乙個棧幀,棧幀依次壓棧 棧幀中存放了每個方法的基本資料變數,物件的引用,操作指令,出口資訊等 本地方法棧 存放的是native方法 其他語言寫的 其他和虛擬機器棧一樣...