JVM基本结构

JVM之运行时常量池(Runtime Constant Pool)

基本特性:

  • 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)

 基本特性:

  • l  线程共享区域,存储被JVM加载的类信息、常量、静态变量、即时编译器编译的代码等
  • l  堆的逻辑部分,不限定方法去内的内存位置和编译代码的管理策略,不限定实现垃圾回收
  • l  容量可不定也可动态扩展,不要求物理连续
  • l  回收主要针对常量池的回收,和类型的卸载

HotSpot虚拟机方法区:

使用永久代实现方法区。不包含字符串常量池。

JVM之堆(Heap)

基本特性:

  • l  虚拟机启动时创建的线程共享的内存区域,所有实例对象和数组对象分配内存的区域
  • l  GC垃圾手机管理器管理的主要区域,GC堆
  • l  容量可以固定,也可以动态扩展,自动收缩 -Xmx最大堆大小 -Xms最小、初始堆大小
  • l  所使用的内存不需要保证连续性,即不需要物理上的连续性,只需要逻辑上的连续性。
  • l  分配需要的容量超过提供的容量,或者扩展也无法满足的时候,抛出OutOfMemoryError

Java堆根据automatic storage management system自动内存管理系统gc的管理方式进行内存划分。一般采用分代收集算法(新生代(Eden,From Survivor, To Survivor),老年代,永久代)。

JVM之栈(Stacks)

 https://www.cnblogs.com/niejunlei/p/5987611.html

 

posted @ 2016-10-22 16:35  WindWant  阅读(675)  评论(0编辑  收藏  举报
文章精选列表