美文网首页
jvm运行时数据区

jvm运行时数据区

作者: _小咖喱黄不辣 | 来源:发表于2019-01-07 20:11 被阅读0次

    运行时数据区

    Java虚拟机定义了执行程序时使用的各种运行时数据区域。其中一些是在虚拟机启动时创建,虚拟机退出时才销毁;另外一些是在线程创建时创建,线程退出时销毁。

    运行时数据区

    1.程序计数器

    jvm支持多线程同时执行,每个线程都有自己的程序计数器。线程正在执行的方法叫做当前方法。若是java代码,则PC Register是当前正在执行的指令地址。若是NATIVE代码,则为空。

    2.虚拟机栈

    虚拟机栈是线程私有的,生命周期和线程相同。描述的是java方法执行的内存模型:每个方法在执行时创建一个栈帧,用于存储局部变量表、操作数栈、动态链接、方法出口等。每个方法从调用到执行完成,对应一个栈帧入栈到出栈的过程。

    3.本地方法栈

    native方法

    4.方法区

    方法区和堆一样都是线程共享的内存区域,用于存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据。jdk8称为metaspace, jdk7以前叫做permgen space

    常量池:运行时常量池是方法区的一部分,用于存放编译期产生的各种字面量和引用等。

    5.堆

    堆是虚拟机管理的最大一块内存,所有线程共享,在虚拟机启动时创建。此区域的唯一目的就是存放对象实例,几乎所有对象的实例都在这里分配内存。java可以在物理上不算连续的,只要逻辑上是联系的即可。

    相关文章

      网友评论

          本文标题:jvm运行时数据区

          本文链接:https://www.haomeiwen.com/subject/tjeprqtx.html