JVM之運行時常量池(Runtime Constant Pool)
基本特性:html
- l 方法區的一部分,在方法去中分配,加載淚或者接口後就建立運行時常量區。
- l class文件每個類或接口的常量池表(constant_pool table)的運行時表現形式,
- l 包括編譯期的數值字面量和運行期的方法或者字段引用
ref:class文件結構算法
JVM之PC寄存器(Program Counter Register)
基本特性:數組
- l 當前線程執行的字節碼的行號指示器。
- l Java虛擬機支持多個線程同時執行,每個線程都有本身的pc寄存器。
- l 任意時刻,一個線程都只會執行一個方法的代碼,稱爲該線程的當前方法,對於非native方法,保存正在執行的字節碼的指令地址,native方法,則爲undifine
- l 容量大小至少須要可以存儲一個returnAddress類型的數據或者與平臺相關的本地指針的值
JVM之方法區(Method Area)
基本特性:post
- l 線程共享區域,存儲被JVM加載的類信息、常量、靜態變量、即時編譯器編譯的代碼等
- l 堆的邏輯部分,不限定方法去內的內存位置和編譯代碼的管理策略,不限定實現垃圾回收
- l 容量可不定也可動態擴展,不要求物理連續
- l 回收主要針對常量池的回收,和類型的卸載
HotSpot虛擬機方法區:線程
使用永久代實現方法區。不包含字符串常量池。指針
JVM之堆(Heap)
基本特性:htm
- l 虛擬機啓動時建立的線程共享的內存區域,全部實例對象和數組對象分配內存的區域
- l GC垃圾手機管理器管理的主要區域,GC堆
- l 容量能夠固定,也能夠動態擴展,自動收縮 -Xmx最大堆大小 -Xms最小、初始堆大小
- l 所使用的內存不須要保證連續性,即不須要物理上的連續性,只須要邏輯上的連續性。
- l 分配須要的容量超過提供的容量,或者擴展也沒法知足的時候,拋出OutOfMemoryError
Java堆根據automatic storage management system自動內存管理系統gc的管理方式進行內存劃分。通常採用分代收集算法(新生代(Eden,From Survivor, To Survivor),老年代,永久代)。對象