目录
1,JVM是什么?
2,JDK,JRE,JVM的关系?
3,JVM的组成
4,类加载器
5,运行时数据区(重点)
(1),程序计数器(线程私有)
(2),虚拟机栈(线程私有)
(3),本地方法栈(线程私有)
(4),方法区(线程公有)
(5),堆(线程公有)
6,总结
//博主画图不易,转载请标明来源。
JVM》》Java Virtual Macheine 》》Java虚拟机。
实际上JVM是一种用于计算设备的规范,真正使用的是根据这个规范的hotspot VM等虚拟机产品。
这里我们看一下Java执行的过程
JVM从软件层屏蔽了底层硬件指令层的细节,使得开发人员不需要去关注运行环境不同而所提供的底层指令。
简单来说是包含关系,JDK包含了JRE,JRE又包含了JVM,这里我们看一张官方给的图
在JDK中包含编译器等可执行的工具以及JRE中的基本类库接口等等,JRE的底层就是JVM。
Java加载类的过程
类加载过程
加载:主要工作是将类的二进制字节流到JVM内部,并存储在运行时内存区的方法区,然后将其转换为一个与目标类型对应的java.lang.Class对象实例(jdk1.8方法区改为Metaspace实现),这个Class对象在日后就会作为方法区中该类的各种数据的访问入口。
验证:负责对字节流进行验证,是否符合jvm的规范要求,是否有影响jvm的运行稳定性。验证内容涵盖了类数据信息的格式验证、语义分析、操作验证等
格式验证:验证是否符合class文件规范
语义验证:检查一个被标记为final的类型是否包含子类;检查一个类中的final方法视频被子类进行重写;确保父类和子类之间没有不兼容的一些方法声明(比如方法签名相同,但方法的返回值不同ÿ
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ri-ji/69623.html