定义了线程和主内存之间的抽象关系,即Jvm在计算机内存中的工作方式
内存区域是指 Jvm 运行时将数据分区域存储,强调对内存空间的划分。
Java运行时数据区域主要可以分为五个区域:
1.程序计数器
2.Java虚拟机栈
3.本地方法栈
4.堆
5.方法区
用来记录线程正在执行的虚拟机字节码指令的地址,如果正在执行的是 Native 方法,这个计数器值则为空(Undefined)
每一个线程都有自己独立的程序计数器,各条线程之间计数器互不影响
是一块较小的内存空间,而且此内存区域是唯一一个在 Java 虚拟机规范中没有规定任何 OutOfMemoryError 情况的区域
一个方法在执行的同时,会创建一个栈帧用于存储该方法的局部变量、方法出口、操作数栈、动态链接等信息。方法从执行到结束,对应着一个栈帧在虚拟机栈中从入栈到出栈的过程。
线程私有的,它的生命周期与线程相同
和Java虚拟机栈作用相似,区别在于Java虚拟机栈执行的式java方法,而本地方法栈执行的是虚拟机使用到的Native方法
就是存放对象实例,几乎所有的对象实例都在这里分配内存
是 Java 虚拟机所管理的内存中最大的一块
被所有线程共享的一块内存区域
存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据
与 Java 堆一样,是各个线程共享的内存区域
问题
参考:
Java内存区域划分
Java内存区域(运行时数据区域)和内存模型(JMM)
原文:https://www.cnblogs.com/xxyxt/p/11370293.html