当前位置:科普知识站>IT科技>

java|classloader

IT科技 阅读(3.35W)

<link rel="stylesheet" href="https://js.how234.com/third-party/SyntaxHighlighter/shCoreDefault.css" type="text/css" /><script type="text/javascript" src="https://js.how234.com/third-party/SyntaxHighlighter/shCore.js"></script><script type="text/javascript"> SyntaxHighlighter.all(); </script>

java classloader是什么,让我们一起了解一下?

ClassLoader就是用来动态加载class文件到内存当中用的,通过Java的类加载机制来动态加载某个class文件到内存当中的,从而只有class文件被载入到了内存之后,才能被其它class所引用。

classloader(类加载器)的主要工作是什么?

就是把类文件加载到JVM中。

1、加载:定位要加载的类文件,并将其字节流装载到JVM中。

2、链接:给要加载的类分配最基本的内存结构保存其信息,比如属性,方法以及引用的类。

java classloader

在该阶段,该类还处于不可用状态。

(1)验证:对加载的字节流进行验证,比如格式上的,安全方面的。

(2)内存分配:为该类准备内存空间来表示其属性,方法以及引用的类。

(3)解析:加载该类所引用的其它类,比如父类,实现的接口等。

3、初始化:对类变量进行赋值。

java classloader 第2张

那么类加载器是如何实现的?

当JVM(Java虚拟机)启动时,会形成由三个类加载器组成的初始类加载器层次结构:

bootstrap classloader            extension classloader      system classloader

bootstrap classloader -引导(也称为原始)类加载器,它负责加载Java的核心类。在Sun的JVM中,在执行java的命令中使用-Xbootclasspath选项指定附加的类。这个加载器的是非常特殊的,它实际上不是 java.lang.ClassLoader的子类,而是由JVM自身实现的。大家可以通过执行以下代码来获得bootstrap classloader加载了那些核心类库:

URL[] urls=sun.misc.Launcher.getBootstrapClassPath().getURLs();   for (int i = 0; i < urls.length; i++) {     System.out.println(urls.toExternalform());   }