0基础-JVM运行时数据区域详解

目录

运行时数据区域

1. 程序计数器

2.虚拟机栈

3.本地方法栈

4.堆

5.方法区


运行时数据区域

图片中所示就是jvm运行时数据区域,左手边灰色框(方法区、堆)为线程间共享的,右手边白色框(虚拟机栈、本地方法栈、程序计数器)全都是每个线程独有的。下面会为大家逐一进行讲解。

1. 程序计数器

主要用于存放下一行要执行的指令的行号

举个例子:给一个绳上绑一个计数器,记录每根绳子跳的次数,绳之间互不影响,也不会造成内存溢出。每个线程上都有一个,互不影响。

2.虚拟机栈

通常指的就是虚拟机栈,更多情况下指的是虚拟机栈中的局部变量表

局部变量表存放了编译期可知的各种java虚拟机基本数据类型。对象引用类型,不是指对象本身,可能是指向对象起始地址的引用指针。

存储空间以局部变量槽表示,其中64位长度的long和 double类型的数据会占用两个变量槽,其余的数据类型只占用一个。

3.本地方法栈

本地方法栈与虚拟机栈所发挥的作用是非常相似的,其区别只是虚拟机栈为虚拟机执行Java方法(也就是字节码)服务,而本地方法栈则是为虚拟机使用到的本地(Native) 方法服务。

4.堆

主要用于存储对象,几乎所有的对象实例都在这里分配内存

线程之间是共享的。此内存区域的唯一目的就是存放对象实例,Java 世界里“几乎”所有的对象实例都在这里分配内存。

5.方法区

线程之间是共享的。存放被虚拟机加载的类型信息、常量、静态变量、代码缓存等

想了解jvm对象内存布局,下方戳戳

0基础-JVM对象内存布局

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值