计算机系统应用教程网站

网站首页 > 技术文章 正文

JVM面试系列五:java类加载机制 java类加载机制详解

btikc 2024-11-02 11:09:26 技术文章 9 ℃ 0 评论

java类加载是java平台提供的最基本最重要的概念之一。理解好类加载机制可以帮助你设计并编写扩展的应用程序框架,就不必因为ClassCastException和ClassNotFoundException这类的异常而去反复调试程序,接下来我们一起来复习下面试中常问到的java类加载机制。


在java中类是java虚拟机中要执行的代码,在使用这个类之前先要将它加载到jvm进程中。已加载到jvm中的类是java.lang.Class类的实例。有一个特殊的类负责类加载即java.lang.ClassLoader。

在深入分析类加载之前我们首先要建立一个基本概念:首先java类加载器是可继承的。除了根加载器bootstrap class loader,每个类加载器都有一个父加载器。JVM启动时会创建三个类加载器:bootstrap、extension和system class loaders。这三个加载器分别负责加载jvm中不同的类:

java类加载器

  • bootstrap class loader 加载java核心类库,如%JRE_HOME%\lib下的rt.jar、resources.jar、charsets.jar

  • extention class loader 加载$JAVA_HOME/lib/ext 路径下的类

  • system class loader 加载当前应用$CLASSPATH的类

另外,为方便控制类加载行为,java应用程序可以创建自定义的类加载器,比如我们需要加载的类不在classpath,而在D盘下某个class文件,就需要我们自定义一个classloader,需要注意三点:

  1. 自定义的classloader类需继承自ClassLoader抽象类。

  2. classloader类需要复写父类的findClass()方法。

  3. findClass()方法中需要调用defineClass()。

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表