天天看点

面试答题天花板:如何理解类加载器?简单说说对类加载器的理解。·类加载是Java虚拟机(JVM),将Java类的字节码加载

作者:学Java2

面试答题天花板:如何理解类加载器?

简单说说对类加载器的理解。

·类加载是Java虚拟机(JVM),将Java类的字节码加载到内存里面,并将其转换为可执行代码的过程。

·类加载器就是会根据指定全限定名称将class文件加载到JVM内存,转为Class对象。

·Java虚拟机支持多种类加载器,每个类加载器都会有不同的职责以及加载的范围。比如启动类加载器,负责将存放在AVA_HOME>\ib下面以及你配置的-Xbootclasspath下面的类加载到内存里面。还有几个是Java语言实现的,它继承了ClassLoader抽象类,比如扩展类加载器(器)。

扩展类加载器它负责加载ext目录下面或者已指定的扩展类库的搜索路径下的类库。应用程序类加载器(Application ClassLoader),它负责加载用户类路径(classpath)上指定类库。一般情况下面如果没有自定义类加载器,那么默认就是用的用户类加载器。

当然也可以去实现自己的类加载器,然后类的加载顺序会去遵循一个双亲委派的约定。另外准备了一份加瓦程序员求职突击手册,里面包含了经历模板、热门面试题以及弹性技巧,如果有需要可以在评论区留言领取。

什么是双亲委派?所谓双亲委派就是类加载器收到加载请求的时候,首先会判断是否自己已经加载过了,如果加载过了直接返回,否则会先委派给父类加载器。父类加载器也会先去判新是否已经加载过,如果没有加载,会继续向上委派。

直到顶层的父类加载器如果父类加载器无法加载,则将任务返回给子类加载器。由子类加载器自己去加载,如果子类加载器自己也无法加载,则会抛出ClassNotFoundException的异常,表示加载失败。目的:是为了java程序里面的类库的一致性以及安全性,防止在不同的内加载器中出现同名的类,而导致的类的不一致或者冲突。怎么去打破双亲委派?我知道的有两种方式来打破双亲委派。

·第一种:继承classload抽象类重写loadClass方法。在这个方法里面,可以自定义要加载的类使用的类加载器。

·第二种:使用线程上下文加载器。可以使用setContextClassLoader(方法)来设置当前要使用的类加载器。

好的,初面就到这里了,复试时间出来以后会通知你的。

面试答题天花板:如何理解类加载器?简单说说对类加载器的理解。·类加载是Java虚拟机(JVM),将Java类的字节码加载
面试答题天花板:如何理解类加载器?简单说说对类加载器的理解。·类加载是Java虚拟机(JVM),将Java类的字节码加载
面试答题天花板:如何理解类加载器?简单说说对类加载器的理解。·类加载是Java虚拟机(JVM),将Java类的字节码加载
面试答题天花板:如何理解类加载器?简单说说对类加载器的理解。·类加载是Java虚拟机(JVM),将Java类的字节码加载

继续阅读