JVM虚拟机结构

本文详细介绍了JVM虚拟机的三个主要部分:类加载器负责加载字节码,内存结构包括线程共享内存(方法区和堆内存)及线程私有内存(程序计数器、JVM栈和本地方法栈),执行引擎由解释器、即时编译器和垃圾回收器组成。

虚拟机结构图

在这里插入图片描述

从图中看出:
JVM虚拟机主要有三大部分组成:
1. 类加载器
2. JVM运行时内存
3. 执行引擎

一、类加载器

类加载器主要用来加载字节码文件(.class)到内存中

二、内存结构

如图:可将内存分为两大部分,一、线程共享内存区域;二、线程私有内存区域

2.1 线程共享内存

共享内存有两部分:方法区、堆内存

  • 方法区:主要用来存储类加载器加载的类的原始数据,如类名、类的继承信息、类上的注解信息等等;
  • 堆内存:凡是创建的新的对象都会放到堆内存中,如new Student()
2.2 内存私有内存

私有内存主要有三块:程序计数器、JVM虚拟机栈、本地方法栈

  • 程序计数器:主要是记录当前线程被CPU执行程序的行数,方便CPU下次切换过来继续执行;
  • JVM虚拟机栈:用来存储局部变量、对象引用信息、方法参数信息等;
  • 本地方法栈:用来存储本地方法的内容,本地方法指JVM需要依托操作系统才能执行的方法,需要通过JVM调用操作系统来完成的一些事件。

三、执行引擎

执行引擎主要分为三部分:解释器、即时解释器(JIT)、垃圾回收器(GC)

  • 解释器:因为JVM目前执行的是.class字节码文件,但是CPU无法识别字节码,CPU只能识别机器码,所以.class需要通过解释器来将字节码文件解释为机器码;
  • 即时解释器:如果所有的.class在运行的时候都需要解释,那么效率将会不高,所有JVM提出热点代码的概念,即时解释器可以发现热点代码(经常执行的代码片段),将其机器码缓存起来,来保证热点代码的即时解释;
  • 垃圾回收器:用来回收对象,释放内存。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值