0
点赞
收藏
分享

微信扫一扫

JVM内存模型(运行时数据区)

那小那小 2022-04-26 阅读 75
java

在这里插入图片描述在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

共有部分

  1. 堆:存放对象
    分为新生代和老年代
  2. 方法区:类信息,【常量池】,反射中类的class,field,method等信息存放在这里
    方法区是JVM抽象的接口,实现类有元空间永久代
    元空间(JDK8后从堆内独立出来使用电脑本地内存,理论上电脑内存有多大元空间就有多大)和永久代(堆空间的一部分)是对该抽象(方法区)的具体实现
    【Permgen/MetaSpace】 implement MethodArea implement MethodArea


线程私有部分

  1. Java栈,也叫做虚拟机栈:存放基本类型以及对对象的引用地址
    Java栈的最小单位 为栈帧,每一个栈帧都相当于一个方法,按照栈先进后出的顺序体现了方法调用的逻辑,即当前方法调用完成会回退到调用者那里,以此类推,其中GC也可以根据此回退操作把已经返回的方法进行垃圾回收
    每个栈帧都有局部变量表,操作数栈,动态链接,方法返回地址。

在这里插入图片描述

  1. 本地方法 栈(native method stack):本地方法运行中存放临时变量的栈
    本地方法:使用其他语言描写的,交由java运行的,使用native关键字修饰的方法(例如thread.sleep())

  2. 程序计数器(Program Counter Register):记录线程执行到那个位置,以及要执行的下一行指令,其中if else,for,switch case等代码逻辑结构关键字都是由程序计数器实现的(根据字符【】)

常量池:存放运行时常量和类、方法的细节结构等

举报

相关推荐

0 条评论