栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

jvm类的加载过程

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

jvm类的加载过程

类的加载过程:

加载    链接:( 验证  准备   解析)   初始化   使用  卸载 

加载: classpath   jar包   网络,磁盘位置。类的class 二进制字节流都进来。 在内存中生成  java.lang.Class 对象放进元空间。   此阶段可以干预,自定义类的加载器实现类的加载。

验证 : 验证Class文件的字节流包含的信息符合《java虚拟机规范》的全部约束要求。保证虚拟机的安全。    class文件的二进制 cafe babe 魔法头

准备: 类变量赋值   int 为 0  long  0L  boolean 为false  引用类型是null。 常量赋正式值。

解析: 把符号引用翻译为直接引用。

初始化:  new 类的时候, 访问类的静态属性。 修改静态属性。 调用静态方法 。反射调用。 初始化类,父类也会被初始化。

使用: 使用这个类。

卸载:  GC。  1。该类的所有实例都被gc   。jvm不存在该类的实例     2.加载类的ClassLoader 被gc。 3,没有引用。   (一般不卸载类。)

一个类被初始化的过程:

使用时候:  先加载。   赋值静态变量,  静态代码快。   new对象时候,按照代码顺被,初始化代码块,构造器。 

继承时父子类的初始化顺序:

    先加载父类。在加载子类。

    类的顺序,按照类的加载顺序执行。 

    父类:静态变量。静态初始化快。子类:静态变量。静态初始化快。new时:父类变量,初始化快,构造器。子类变量,初始化快,构造器

什么是类加载器:   

    在类的加载阶段,通过一个类的全限定名来获取描述该类的二进制字节流的这个动作的代码,被称为类加载器。这个动作是可以自定义实现的。

    

JVM有那些类加载器:

    虚拟机角度看。分为 2种,启动类加载器(Bootstrap ClassLoader),其他类加载器,继承抽象类java.lang.ClassLoader。

    站在JDK角度看, 1.2开始保持3层类加载器架构。

JVM种不同的类加载器 加载那些文件?

1.启动类加载器(Bootstrap Classloader):C++jrelibrt.jar,resources.jar.charsets.jar    或 -Xbootclasspath参数指定的路径种存放的类库。

2.扩展类加载器(Extension ClassLoader):JAVA语言实现的

sun.misc.Launcher$ExtClassLoader

jrelibext.

被java.ext.dirs系统变量指定的路径中所有的类库。

3.应用程序类加载器。Application ClassLoader:系统的类加载器:JAVA语言实现的

sun.misc.Launcher$AppClassLoader

    

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/759523.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号