Java虚拟机以内存结构

本文主要作要点概况,做为《深刻理解Java虚拟机》的读书笔记,并整理了一些网络上的博文。更方便理解JVMjava

程序计数器

  • 线程独占区
  • 能够理解为记录当前线程所执行字节码的行号
  • 惟一JVM规范中没有规定任何OOM的状况

JAVA虚拟机栈

  • 线程独享区
  • java方法执行的动态内存模型
  • 栈帧:每一个方法的执行,都会建立一个栈帧,伴随方法从建立到完成。存储局部变量表、操做数栈、动态连接、方法出口
  • 局部变量表:存放编译期可知的各类基本数据类型,引用类型、return address类型。局部变量表的内存空间是在编译期完成分配的。进入一个方法栈帧分配多少内存是固定的。在方法运行期间不会改变局部变量表的大小

本地方法栈

  • 线程独占区
  • 执行native方法

java 堆

  • 线程共享区
  • 存放对象实例,垃圾回收期主要管理区域

方法区

  • 线程共享区
  • 存储运行时常量池。已经被虚拟机加载的类信息、常量、静态变量。即时编译期编译后的代码等数据
    1. 类的信息:类的版本、字段、方法、接口
    2. 运行时常量池:存放 类文件编译时生产的 各类字面量和符号引用。运行时也能够新增常量如String intern
  • 方法区和永久代
  • 垃圾回收在方法去的行为
  • 异常的定义

总结

相关文章
相关标签/搜索