![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
jvm
文章平均质量分 69
张三疯学独孤九剑
今日长缨在手,何时缚住苍龙
展开
-
第4章:再谈类的加载器
类加载器是JVM执行类加载机制的前提。ClassLoader的作用:ClassLoader是Java的核心组件,所有的Class都是由ClassLoader进行加载的,ClassLoader负责通过各种方式将Class信息的二进制数据流读入JVM内部,转换为一个与目标类对应的java.lang.Class对象实例。然后交给Java虚拟机进行链接、初始化等操作。因此,ClassLoader在整个装载阶段,只能影响到类的加载,而无法通过ClassLoader去改变类的链接和初始化行为。至于它是否可以运行,则由E原创 2022-07-05 20:08:25 · 399 阅读 · 1 评论 -
第3章:类的加载过程(类的生命周期)详解
在Java中数据类型分为基本数据类型和引用数据类型。基本数据类型由虚拟机预先定义,引用数据类型则需要进行悉类的加载。(这里的类不是狭义上的类,而是包括:接口,注解,枚举)按照Java虚拟机规范,从class文件到加载到内存中的类,到类卸载出内存为止,它的整个生命周期包括如下7个阶段:其中,验证、准备、解析3个部分统称为链接(Linking)从程序中类的使用过程来看:我们所说的加载完毕包括**:加载、链接、初始化三个阶段都完成之后类进入方法区**中我们待会所讲的是按照五个阶段来进行讲解的。蚂蚁金服:描述一下原创 2022-07-02 13:10:49 · 450 阅读 · 0 评论 -
Class文件结构和字节码指令集
JVM规范所有的 JVM 全部遵守 Java 虚拟机规范,也就是说所有的 JVM 环境都是一样的, 这样一来字节码文件可以在各种 JVM 上进行。想要让一个 Java 程序正确地运行在 JVM 中,Java 源码就是必须要被编译为符合 JVM 规范的字节码。前端编译器的主要任务就是负责将符合 Java 语法规范的 Java 代码转换为符合 JVM 规范的字节码文件。javac 是一种能够将 Java 源码编译为字节码的前端编译器。javac 编译器在将 Java 源码编译为一个有效的字节码文件过程中经历了4原创 2022-06-26 18:46:47 · 636 阅读 · 0 评论 -
对象的访问定位
对象的访问定位对象的两种访问方式:句柄访问和直接指针句柄访问缺点:在堆空间中开辟了一块空间作为句柄池,句柄池本身也会占用空间;通过两次指针访问才能访问到堆中的对象,效率低优点:reference中存储稳定句柄地址,对象被移动(垃圾收集时移动对象很普遍)时只会改变句柄中实例数据指针即可,reference本身不需要被修改图示直接指针(HotSpot采用)优点:直接指针是局部变量表中的引用,直接指向堆中的实例,在对象实例中有类型指针,指向的是方法区中的对象类型数据缺点:对象被移原创 2022-05-25 18:54:33 · 256 阅读 · 0 评论 -
对象实例化过程
判断对象对应的类是否是加载、链接、初始化虚拟机遇到一条new指令,首先去检查这个指令的参数能否在Metaspace的常量池中定位到一个类的符号引用,并且检查这个符号引用代表的类是否已经被加载、解析和初始化。(即判断类元信息是否存在)。如果没有,那么在双亲委派模式下,使用当前类加载器以ClassLoader+包名+类名为Key进行查找对应的.class文件。如果没有找到文件,则抛出ClassNotFoundException异常,如果找到,则进行类加载,并生成对应的Class类对象指针碰撞:如...原创 2022-05-25 18:28:03 · 185 阅读 · 0 评论 -
双亲委派机制
双亲委派机制原理Java虚拟机对class文件采用的是按需加载的方式,也就是说当需要使用该类时才会将它的class文件加载到内存生成Class对象。而且加载某个类的class文件时,Java虚拟机采用的是双亲委派模式,即把请求交由父类处理,它是一种任务委派模式工作原理:如果一个类加载器收到了类加载请求,它并不会自己先去加载,而是把这个请求委托给父类的加载器去执行;如果父类加载器还存在其父类加载器,则进一步向上委托,依次递归请求,最终将到达顶层的启动类加载器;如果父类加载器可以完成类加载任务,就原创 2022-05-17 09:10:28 · 131 阅读 · 0 评论