码迷,mamicode.com
首页 > 其他好文 > 详细

类加载器:ClassLoader

时间:2019-05-06 14:40:22      阅读:128      评论:0      收藏:0      [点我收藏+]

标签:path   aaa   OLE   ima   实体   display   过程   image   初始   

加载流程

当运行一个程序时,JVM启动

  • 运行 bootstrap classloader,该ClassLoader加载Java核心API(ExtClassLoader和AppClassLoader也在此时加载)
  • 调用ExtClassLoader加载扩展API
  • APPClassLoader加载CLASSPATH目录下定义的Class

一些重要的方法

  • loadClass方法,定义如下:
Class loadClass(String name, boolean resovle);
技术图片

name:JVM需要的类的名称

resolve:方法是否需要解析类

  • forName方法
Class class = Class.forName("something");

该方法调用Class.forName(name,initialize,loader);

也就是等同于

Class.forName("something", true, CALLCLASS.class.getClassLoader());

initialize:设置加载类的时候是否连接该类

连接分为三步:

  1. 验证class是否符合规格
  2. 为类变量分配内存的同时设置默认初始值
  3. 解释,这一步是可选的,是否解释由loadClass方法的第二个参数来判断。这里的解释是指根据勒种的符号引用查找相应的实体,再把符号应用替换成一个直接引用的过程。

两个方法的区别:

ClassLoader.loadClass()不会初始化该类,而Class.forName()加载类时会进行初始化

类加载器:ClassLoader

标签:path   aaa   OLE   ima   实体   display   过程   image   初始   

原文地址:https://www.cnblogs.com/zzfan/p/10819140.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!