java虛擬機分析

方法區 在java的虛擬機中有一塊專門用來存放已經加載的類信息、常量


常量池 常量池是方法區的一部分,主要用來存放常量和類中的符號引用等信息。



1.方法區又叫靜態區,跟堆一樣,被所有的線程共享。方法區包含所有的class和static變量。
2.方法區中包含的都是在整個程序中永遠唯一的元素,如class,static變量。


3.—,全局變量和靜態變量的存儲是放在一塊的,初始化的全局變量和靜態變量在一塊區域, 未初始化的全局變量和未初始化的靜態變量在相鄰的另一塊區域。


棧區 也叫java虛擬機棧,是由一個一個的棧幀組成的後進先出的棧式結構,棧楨中存放方法運行時產生的局部變量、方法出口等信息。


1.每個線程包含一個棧區,棧中只保存基礎數據類型的對象和自定義對象的引用(不是對象)或者已存在的引用類型對象的引用,對象都存放在堆區中
2.每個棧中的數據(原始類型和對象引用)都是私有的,其他棧不能訪問。
3.棧分爲3個部分:基本類型變量區、執行環境上下文、操作指令區(存放操作指令)。


4.由編譯器自動分配釋放 ,存放函數的參數值,局部變量的值,成員變量等.


堆區 用於存放類的對象實例。






基本數據類型都在stack中,而引用類型,變量是放在stack中,真正有內容的東西放在heap中,也就是當new了一個新的引用類型,他就會放在堆中,同時棧中的引用類型變量會指向堆中你new出來的東西!


1.存儲的全部是對象,每個對象都包含一個與之對應的class的信息。(class的目的是得到操作指令)
2.jvm只有一個堆區(heap)被所有線程共享,堆中不存放基本類型和對象引用,只存放對象本身.


3.一般由程序員分配釋放, 若程序員不釋放,程序結束時可能由OS回收 。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章