學習之餘,整理了下jvm的資料
堆:
需要重點關注的一塊區域,涉及到記憶體的分配與**
方法區:
用於儲存已經被虛擬機器載入的類資訊、常量、靜態變數等資料,也叫永久區
常量池:
用於存放編譯期生成的各種字面量和符號引用(jdk6在方法區、jdk7在堆中)
虛擬機器棧:
棧裡面存放著各種基本資料型別和物件的引用
方法執行時會建立乙個棧幀(儲存區域性變數表、運算元棧、動態鏈結、方法出口等資訊)
每個方法的從呼叫到執行完成,對應著棧幀在虛擬機器棧中入棧和出棧的過程
本地方法棧:
本地方法棧儲存的是native方法的資訊,當乙個jvm建立的執行緒呼叫native方法後,jvm不再為其在虛擬機器棧中建立棧幀,jvm只是簡單地動態鏈結並直接呼叫native方法
程式計數器:
較小的記憶體空間,當前執行緒執行的位元組碼的行號指示器;各執行緒之間獨立儲存,互不影響
jvm記憶體結構
方法區用於存放類 class檔案 的相關資訊,如類名,訪問修飾符 常量池 字段描述 方法描述等資訊。方法區的一部分,存放編譯時期生成的各種字面量和符號引用,例如 字串!每個方法被執行的時候都會同時建立乙個棧幀用於存放方法內部的區域性變數等資訊。每乙個方法被呼叫直至執行完成的過程,就對應著乙個棧幀在虛...
JVM記憶體結構
所有的j a開發人員可能會遇到這樣的困惑?我該為堆記憶體設定多大空間呢?outofmemoryerror的異常到底涉及到執行時資料的哪塊區域?該怎麼解決呢?其實如果你經常解決伺服器效能問題,那麼這些問題就會變的非常常見,了解 jvm記憶體也是為了伺服器出現效能問題的時候可以快速的了解那塊的記憶體區域...
JVM記憶體結構
以下所寫jvm內容都是基於hotspot。定義 j a virtual machine j a程式的執行環境 j a 二進位制位元組碼的執行環境 好處 比較 jvm指令 直譯器 機器碼 cpu 1 程式計數器 cpu中的暫存器實現 定義 program counter register 程式計數器 ...