Java的类加载学习笔记

本文是关于Java类加载的学习笔记,详细介绍了类加载器的作用、三种主要的类加载器(Bootstrap Classloader、Extension Classloader、Application Classloader)以及双亲委托机制,解释了类加载器如何避免重复加载和保证安全性。此外,还讨论了自定义类加载器的使用场景和实现方式,包括类加载器的API方法,并对比了.class和getClass()的区别。
摘要由CSDN通过智能技术生成

      最近总是被类加载器搞混,于是下决心好好的去看一下,总结一下类加载器的内容,之前也看过很多博客,但是没有总结过,也没有细细的去看过,隔一段时间,好像又忘记了,趁着这次机会,好好学习一下,自己总结一下,这样也能加深对类加载器的理解,有不对的地方,请大家指正,当然网上有非常的多的博客可以参考,有的写的也非常的好,这里只是一个学习笔记。

   一、java的类加载器

     类加载器其实是将java的类的编译文件class文件加载到JVM虚拟机中,程序就会正常运行了。在jvm启动的时候并不是一次性把所有的class文件都加载到内存中,而是根据需要动态的进行加载,当然有一部分class文件需要已启动就加载到内存中,否则jvm就无法正常运行了。

首先,我们通过一个例子来看看什么时候java的类加载器,其实如果用过反射的话,应该都清楚经常要用到classLoader这方面的参数。

@Test
 public void testClazzLoader(){
     ClassLoader loader = Test.class.getClassLoader();
     System.out.println("class loader:"+loader.toString());
		
}

看到上面的例子,一个非常简单的获取class的例子,得到class对象之后,调用对应的方法,getClassLoader,可以得到我们想要的ClassLoader对象,下面我们输出一下这个对象:

class loader:sun.misc.Launcher$AppClassLoader@776ec8df

我们可以看到输出的对象是AppClassLoader这个类,那么这个是什么呢,这个就是java的三大类加载器之一。先不管这个是什么加载器,那么三大加载器是什么呢?

三种类加载器:Bootstrap Classloader, Extension Classloader, Application Classloader。

这里先做一个简单的介绍:

Bootstrap Classloader: 最顶层的类加载器,加载核心库,比如我们熟悉的%JRE_HOME%\lib的一些jar包等。

Extension Classloader:扩展的类加载器,主要加载%JRE_HOME%\lib\ext下面的jar包。

Application Classloader: 应用程序类加载器,该加载器由sun.misc.Launcher$AppClassloader()方法直接获取,所以又称为系统类加载器。就是加载当前classPath下面的所有类。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值