JVM基本結構

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),老年代,永久代)。對象

JVM之棧(Stacks)

  http://www.javashuo.com/article/p-zperlczj-nq.html
相關文章
相關標籤/搜索