2018-11-21 JVM运行时数据区

方法区

线程共享
用来储存类信息,常量,静态变量,即时编译器编译后的代码
OutOfMemoryError

线程共享
最大的一块内存,用来存放对象实例,垃圾收集器的主要区域
OutOfMemoryError

虚拟机方法栈

线程私有
java方法执行的内存模型:每个方法执行的时候都会有一个栈帧用来存储局部变量表(基本数据类型,对象引用,returnAddrress),操作数栈,动态链接,方法出口,方法执行的过程就是一个栈帧从入栈到出栈的过程
局部变量表所需的空间在编译期间完成分配,在运行期不会改变局部变量表的大小。
StackOverFlowError和OutOfMemoryError

本地方法栈

线程私有
本地方法栈和虚拟机方法栈的功能几乎一样,执行native方法

程序计数器

线程私有

  1. 执行java方法时,记录正在执行的字节码的虚拟机字节指令的地址
  2. 执行本地方法(Native)时,为空(Undefined)
  3. 没有OutOfMemoryError

运行时常量池(元空间)

1.8是改为元空间,存放编译期生成的各种字面量和符号引用,直接引用

直接内存

受物理内存和从操作系统的限制
OutOfMemoryError

你可能感兴趣的:(2018-11-21 JVM运行时数据区)