Java虚拟机的体系结构和内存模型

 2019-12-10 16:06  阅读(1093)
文章分类:Java Core

jvm内存结构

20191210001570\_1.png

方法区和堆是所有线程共享的内存区域;而java栈、本地方法栈和程序计数器是运行是线程私有的内存区域。每个线程都有一个独立的栈和程序计数器

主要关注内存结构,以及各自存储什么内容。

  • Java堆(Heap),是Java虚拟机所管理的内存中最大的一块。Java堆是被所有线程共享的一块内存区域,在虚拟机启动时创建。此内存区域的唯一目的就是存放对象实例,几乎所有的对象实例都在这里分配内存。
  • 方法区(Method Area),方法区与Java堆一样,是各个线程共享的内存区域,它用于存储已被虚拟机加载的类信息、常量、静态变量、方法字节码信息(包括静态方法和实例方法)即时编译器编译后的代码等数据。
  • 程序计数器(Program Counter Register),程序计数器是一块较小的内存空间,它是在线程启动时创建的,大小为一个字长。它的作用可以看做是当前线程所执行的下一条字节码指令的位置。
  • Java栈(Java Stacks),与程序计数器一样,也是线程私有的,它的生命周期与线程相同。虚拟机栈描述的是Java方法执行的内存模型:每个方法被执行的时候都会同时创建一个栈帧(Stack Frame),用于存储局部变量表、方法参数、中间运算结果等信息。每一个方法被调用直至执行完成的过程,就对应着一个栈帧在虚拟机栈中从入栈到出栈的过程。
  • 本地方法栈(Native Method Stacks)。这是 Java 调用操作系统本地库的地方。
  • **执行引擎,**Java虚拟机的核心,控制装入 Java 字节码并解析;对于运行中的Java程序而言,每一个线程都是一个独立的虚拟机执行引擎的实例,从线程生命周期的开始到结束,他要么在执行字节码,要么在执行本地方法。
点赞(0)
版权归原创作者所有,任何形式转载请联系作者; Java 技术驿站 >> Java虚拟机的体系结构和内存模型

相关推荐