谈谈你对JVM的理解

首先JVM由类装载器,运行时数据区域,执行引擎,本地接口库和本地方法库组成。

类装载器

这里解释一下类加载机制,一般分为三个部分,加载,连接,初始化。其中连接又可分为验证,准备,解析三个部分。加载阶段主要查找加载类的二进制文件。
验证阶段主要确保文件的正确性,准备阶段主要为静态变量分配内存,初始化默认值,解析阶段主要将符号引用转换为直接引用。
初始化阶段为类的静态引用赋予正确的初始值
类加载器可以分为三种:根加载器,拓展类加载器,系统类加载器。
既然说了三种类加载器就要提双亲委托机制。 除了顶层的类加载器之外,其余的类加载器都应有自己的父类加载器,如果一个类加载器收到了类加载请求,它首先不会自己去尝试加载这个类,而是把这个请求委派给父类加载器去完成,每一个层次的类加载器都是如此,因此所有的加载请求最终都应该传送到顶层的启动类加载器中,只有当父类加载器反馈自己无法完成加载这个请求(他的搜索范围中没有找到所需要的类时),子类加载器才会尝试自己去加载。

运行时数据区

主要包括:1.方法区:JVM的类装载器加载.class文件,把解析的类型信息放入方法区。
2.堆:是JVM中最大的一块内存区域,该区域的目的只是用于存储对象实例及数组
3.java栈: 每个线程方法在执行时都会创建一个栈帧,存放的为当前线程中局部基本类型的变量,返回地址,每个方法的执行与完成就对应的栈帧的入栈与出栈过程
4.本地方法栈:用于支持native方法的执行,存储了每个native方法调用的状态
5.程序计数器:他是一个小内存空间,如果在执行一个java方法的时候,就记录正在执行的虚拟机字节码指令的地址

执行引擎

它要么执行字节码,这么执行本地方法

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值