JVM中三種記憶體區域

2021-08-04 18:13:33 字數 353 閱讀 6115

1、棧 snack

先進後出,棧為每乙個方法分配乙個幀,當前呼叫的方法或區域性變數總是位於棧頂,當呼叫乙個方法時會開闢乙個新的幀並壓棧。當方法正常返回或者有異常退出時,會出棧。不可被多個執行緒共享

存放區域性變數 方法返回後區域性變數便被**(放物件的引用)

2、堆 heap

所有new出的物件(成員變數 成員方法)、包括陣列、動態分配空間,效率相當低

3、方法區(執行資料區 靜態**區)

存放一些靜態(不變的資料 和 static修飾的資料)的資料;不變的資料 包括 類的位元組碼檔案(.class)

不同的物件分配不同的記憶體空間,但是不同的物件 如果物件的型別相同  那麼共享類內的成員方法。

hibernate中三種狀態

1.session的主要功能是提供對對映的實體類例項的建立,讀取和刪除操作。2.例項可能以下面三種狀態存在 自由狀態 transient 不曾進行持久化,未與任何session相關聯 持久化狀態 persistent 僅與乙個session相關聯 游離狀態 detached 已經進行過持久化,但當前...

二。JVM記憶體區域

jdk1.8之前,代表jvm內一塊區域。jdk1.8之後,也就是元空間metaspace。存放類,靜態變數,常量池。總之與類有關的都在方法區。類一般先載入進方法區。寫好的 被翻譯成位元組碼,對應各種位元組碼指令。計數器就是記錄當前位元組碼指令的位置。jvm多執行緒併發操作時,每個執行緒都有自己的計數...

JVM(二)記憶體區域

堆總被分為兩個部分 新生代和老年代,其中新生代中又被分為eden區和survivor區,survivor區由form survivor和to survivor組成 具體的gc 物件分配方面會在後面的文章講到 在棧幀中一般來說兩個棧幀是不會相互有關係的,都是獨立存在的。但是在某些情況下,會使兩個獨立的...