Java虚拟机的类加载器及类加载的过程是什么

发布时间:2022-02-28 10:24:33 作者:iii
来源:亿速云 阅读:140

今天小编给大家分享一下Java虚拟机的类加载器及类加载的过程是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

1. 类加载子系统

 1.1 概述

类加载子系统负责从文件系统或者网络中加载Class文件,Class文件在文件开头有特定的文件标识

字节码中的常量池加载到 方法区 -----> 运行时常量池信息

1.2 类的加载器

2.类的加载过程

2.1 类的加载过程简

2.2 加载阶段:Loading

小补充:加载字节码文件(.class)的方式

2.3 链接阶段:Linking

验证(Verify)

准备(Prepare)

(在准备阶段 a = 0,到下一个阶段(初始化阶段)a = 1)
(不同的数据类型的变量默认值不一样,如 int =0 ,引用类型 = null)

解析(Resolve)

2.4 初始化阶段:initialization

例子1:

public class Test {
    private static int a=2;
    private static int b=20;

    public static void main(String[] args) {
        System.out.println(a);
        System.out.println(b);
    }
}

例子2:

public class Test {
    public static void main(String[] args) {
        System.out.println("测试一下");
    }
}

3.几种类的加载器

代码:

public class Test {

    public static void main(String[] args) {
        ClassLoader systemClassLoader = ClassLoader.getSystemClassLoader();
        System.out.println(systemClassLoader);//sun.misc.Launcher$AppClassLoader@18b4aac2 :应用类加载器
        ClassLoader parent = systemClassLoader.getParent();
        System.out.println(parent);//sun.misc.Launcher$ExtClassLoader@34a245ab :扩展类加载器
        ClassLoader parent1 = parent.getParent();
        System.out.println(parent1);//null :引导类加载器:非Java语言实现

        ClassLoader classLoader = Test.class.getClassLoader();
        System.out.println(classLoader);//sun.misc.Launcher$AppClassLoader@18b4aac2
        
         ClassLoader classLoader1 = String.class.getClassLoader();
        System.out.println(classLoader1);//null
    }
}

3.1 引导类加载器:

3.2 扩展类加载器:ExtensionClassLoader

3.3 应用程序类加载器:AppClassLoader

3.4 用户自定义类加载器

为什么要用自定义类加载器呢?

用户自定义类加载器实现步骤

继承体系

获取 ClassLoader

4.双亲委派机制

Java 虚拟机对class文件采用的是按需加载的方式,也就是说当需要使用该类时才会将它的class文件加载到内存生成class对象。而且加载某个类的class文件时,Java虚拟机采用的双亲委派模式,即把请求交由父类处理,它是一种任务委派模式

优势

5.其他

在JVM中表示两个class对象是否为同一个类存在两个必要条件

以上就是“Java虚拟机的类加载器及类加载的过程是什么”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注亿速云行业资讯频道。

推荐阅读:
  1. Javaweb-类加载器-类加载器的了解入门
  2. java的类加载器有哪些

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

java

上一篇:css3如何制作网站后台管理面板

下一篇:CSS3如何制作漂亮带动画效果的主机价格表

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》