JVM(2)-JVM内存分区图文

JVM内存分区图文

​ 首先看图,JVM内存里面主要干一下三件事,我们从这三件事展开,了解并掌握JVM内存分区:

在这里插入图片描述


方法区(元数据空间)

​jdk1.8之前叫做方法区,主要放".class"文件加载进来的类,还有一些类似的常量池的东西。jdk1.8以后,改名为"Metaspace"-元数据空间。
在这里插入图片描述


程序计数器

​ 我们写好的java代码会编译成字节码文件,包含各种字节码指令,然后字节码才能被JVM字节码执行引擎,一条条的去执行

​ 我们JVM支持多个线程,我们的代码会开启多个线程并发的执行不同的代码,每个线程都有一个程序计数器,单独记录当前对应线程执行到哪一条字节码指令了。
在这里插入图片描述


Java虚拟机栈(栈区)

​ JVM必须有一块区域是来保存每个方法的局部变量的,这个区就是栈区。

每个线程对应一个栈区,每一个线程执行了一个方法,就会创建对应方法的栈桢,压入栈底,同时,该方法里面也会存放包含在方法里面的局部变量之类的数据。以此类推,方法执行完毕则出栈。
在这里插入图片描述


Java堆内存(堆区)

我们在堆区存放的一个局部变量是用来存放该变量new出来对象的地址所有new出来的对象都在堆区。
在这里插入图片描述


总结:

  1. 加载类进入内存,存放在方法区
  2. 然后有一个主线程执行类中的main方法,通过程序计数器关联记录。
  3. main方法执行,压入栈底,之后的方法依次压入
  4. 方法执行过程中,需要创建实例对象,栈桢中存放局部变量,堆区存放new出来的具体对象实例,局部变量存放该实例的地址。
  5. 方法执行完依次弹出栈
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值