JVM运行时数据区、JVM内存划分和JVM虚拟机架构三者区别和联系

JVM运行时数据区指的时当JVM运行时会出现哪些区域,侧重于了解各个区域创建的时机;JVM内存区域划分是指JVM内存分为哪些区域,侧重于各个区域的作用,是同一块内容从两个角度进行看待。图1和图2分别为JVM运行时数据区和JVM内存区域划分的实例图。

在这里插入图片描述

图1JVM运行时数据区

在这里插入图片描述

图2JVM内存区域划分
  观察图1和图2,图1只是比图2更加详细,本质还是同一个东西。

1.方法区

  存储了类结构信息,例如字段方法数据、构造函数和普通方法字节码内容还有运行时常量区,随着JVM的创建和停止而开始和结束。

2.堆区

  类实例和数组实例分配的区域,随着JVM的创建和停止而开始和结束。

3.JAVA栈

  栈由栈帧组成,每个调用一个方法都会创建一个栈帧,栈帧中有局部变量表、操作数栈和动态链接。java使用局部变量完成方法调用时参数的传递;操作数栈用来存储计算时局部变量表、对象实例的常亮和变量值,准备调用方法的参数和接受方法返回值;动态链接指向。JAVA栈随着单个线程创建和停止而开始和结束。

4.本地方法栈

  和java栈功能差不多,当加载的类需要调用java以外其他语言编写的方法时,会创建本地方法栈。

5.PC计数器

  程序计数器的作用是记住下一条要执行JVM指令位置,指向要执行字节码的行号,交给解释器,解释器翻译成机器码交给CPU执行。,由于程序计数器中存储的数据所占空间的大小不会随程序的执行而发生改变,因此,对于程序计数器是不会发生内存溢出现象(OutOfMemory)的。
在这里插入图片描述

Reference

[1] https://baijiahao.baidu.com/s?id=1634019520492892385&wfr=spider&for=pc .
[2] https://www.cnblogs.com/javastack/p/13391983.html
[3] lhttps://blog.csdn.net/qq_28497823/article/details/104968151.
[4](美)林德霍尔姆等著.Java虚拟机规范 Java SE 第7版[M].北京:机械工业出版社.2014.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值