Java资源分享网 - 专业的Java学习网站 学Java,上Java资源分享网
Java 类加载机制 ClassLoader Class.forName PDF 下载
匿名网友发布于:2024-07-08 11:26:39
(侵权举报)
(假如点击没反应,多刷新两次就OK!)

Java 类加载机制 ClassLoader Class.forName PDF 下载 图1

 

 

资料内容:

 

类加载是Java程序运行的第一步,研究类的加载有助于了解JVM执行过程,并指导开发者采取更有效的
措施配合程序执行。
研究类加载机制的第二个目的是让程序能动态的控制类加载,比如热部署等,提高程序的灵活性和适应
性。
 
一、简单过程
Java程序运行的场所是内存,当在命令行下执行:
java HelloWorld
命令的时候,JVM会将HelloWorld.class加载到内存中,并形成一个Class的对象HelloWorld.class
其中的过程就是类加载过程:
1、寻找jre目录,寻找jvm.dll,并初始化JVM
2、产生一个Bootstrap Loader(启动类加载器);
3Bootstrap Loader自动加载Extended Loader(标准扩展类加载器),并将其父Loader设为
Bootstrap Loader
4Bootstrap Loader自动加载AppClass Loader(系统类加载器),并将其父Loader设为Extended
Loader
5、最后由AppClass Loader加载HelloWorld类。
以上就是类加载的最一般的过程。
 
二、类加载器各自搜索的目录
为了弄清楚这个问题,首先还要看看System类的API doc文档。
1Bootstrap Loader(启动类加载器):加载System.getProperty("sun.boot.class.path")所指定的路
径或jar
2Extended Loader(标准扩展类加载器ExtClassLoader):加载
System.getProperty("java.ext.dirs")所指定的路径或jar。在使用Java运行程序时,也可以指定其搜索路
径,例如:java -Djava.ext.dirs=d:/projects/testproj/classes HelloWorld
3AppClass Loader(系统类加载器AppClassLoader):加载System.getProperty("java.class.path")
所指定的路径或jar。在使用Java运行程序时,也可以加上-cp来覆盖原有的Classpath设置,例如: java
-cp ./lavasoft/classes HelloWorld
ExtClassLoaderAppClassLoaderJVM启动后,会在JVM中保存一份,并且在程序运行中无法改变其
搜索路径。如果想在运行时从其他搜索路径加载类,就要产生新的类加载器。
 
三、类加载器的特点
1、运行一个程序时,总是由AppClass Loader(系统类加载器)开始加载指定的类。2、在加载类时,每个类加载器会将加载任务上交给其父,如果其父找不到,再由自己去加载。
3Bootstrap Loader(启动类加载器)是最顶级的类加载器了,其父加载器为null.