纸上得来终觉浅,绝知此事要躬行  --陆游       问渠那得清如许,为有源头活水来  --朱熹
一个类从被加载到内存中开始到卸载出内存为止,它的整个生命周期包括了:加载(loading)、验证(Verification)、准备(Preparetation)、解析(Resolution)、
初始化(Initialization)、使用(Using)、卸载(Uploading)七个阶段。其中验证’准备和解析称为链接。

一、ClassLoader类加载的架构
 1)、Bootstrap Classloader启动类加载器,主要负责java_home/lib下的核心api或者-Xbootstrap选项指定的jar包装入工作。
2)、Extension ClassLoader扩展类加载器,主要负责java_home/lib/ext下jar包
3)、App CLassLoader 系统类加载器,主要负责Java -classpath/所指的目录下的类与jar包的装入工作;
4)、 UserCustom ClassLoader用户自定义类加载器,在程序运行期间,通过Java.lang.Classloader的子类动态加载class

二、类加载的特性
1)、每一个ClassLoader都会维护一个自己的命名空间,同一个命名空间不能出现两个相同的类名
2)、为了实现java安全沙箱模型顶层的类加载器安全机制, java默认采用了 " 双亲委派的加载链 " 结构。
三、类的加载方式有三种:
1)、命令行启动应用时由JVM初始化加载。
2)、通过class.forName()方法动态加载。
3)、通过ClassLoader().loadClass()方法动态加载。
这三种加载方式对静态代码块的执行有影响。
如下例子:
public class MyHello {static
    {System.out.println("hello word");
    }
}public class Hello {public static void main(String[] args) {ClassLoader loader=Hello.class.getClassLoader();
        try {//静态代码块不运行
            //loader.loadClass("Test.MyHello");

            //静态代码块运行输出hello world
            //Class.forName("Test.MyHello");

            //静态代码块不运行
            //Class.forName("Test.MyHello", false, loader);

            //静态代码块运行输出hello world
            Class.forName("Test.MyHello", true, loader);

        } catch (ClassNotFoundException e) {// TODO 自动生成的 catch             e.printStackTrace();
        }}
}
一、ClassLoader类加载的架构
 1)、Bootstrap Classloader启动类加载器,主要负责java_home/lib下的核心api或者-Xbootstrap选项指定的jar包装入工作。
2)、Extension ClassLoader扩展类加载器,主要负责java_home/lib/ext下jar包
3)、App CLassLoader 系统类加载器,主要负责Java -classpath/所指的目录下的类与jar包的装入工作;
4)、 UserCustom ClassLoader用户自定义类加载器,在程序运行期间,通过Java.lang.Classloader的子类动态加载class

Java 类加载机制 ClassLoder相关推荐

  1. 谈谈 Java 类加载机制

    点击上方"方志朋",选择"置顶或者星标" 你的关注意义重大! 来源:Rainstorm , github.com/c-rainstorm/blog/blob/m ...

  2. 两道面试题,带你解析Java类加载机制

    2019独角兽企业重金招聘Python工程师标准>>> 在许多Java面试中,我们经常会看到关于Java类加载机制的考察,例如下面这道题: class Grandpa {static ...

  3. Java类加载机制详解【java面试题】

    Java类加载机制详解[java面试题] (1)问题分析: Class文件由类装载器装载后,在JVM中将形成一份描述Class结构的元信息对象,通过该元信息对象可以获知Class的结构信息:如构造函数 ...

  4. Java类加载机制:双亲委托模型

    Java类加载机制:双亲委托模型 前言(废话) 一如既往,这篇博客是我极为浅显的理解,仅仅是我记录我自己成长的一环而已.我以前听我老师说过,什么是进步,进步就是当你三个月后重新再看自己的代码,发现那就 ...

  5. 深入研究Java类加载机制

    深入研究Java类加载机制   类加载是Java程序运行的第一步,研究类的加载有助于了解JVM执行过程,并指导开发者采取更有效的措施配合程序执行. 研究类加载机制的第二个目的是让程序能动态的控制类加载 ...

  6. Java类加载机制深度分析

    为什么80%的码农都做不了架构师?>>>    Java类加载机制 类加载是Java程序运行的第一步,研究类的加载有助于了解JVM执行过程,并指导开发者采取更有效的措施配合程序执行. ...

  7. Java高级篇——深入浅出Java类加载机制

    转载自 Java高级篇--深入浅出Java类加载机制 类加载器 简单讲,类加载器ClassLoader的功能就是负责将class文件加载到jvm内存. 类加载器分类 从虚拟机层面讲分为两大类型的类加载 ...

  8. Java类加载机制的理解

    算上大学,尽管接触Java已经有4年时间并对基本的API算得上熟练应用,但是依旧觉得自己对于Java的特性依然是一知半解.要成为优秀的Java开发人员,需要深入了解Java平台的工作方式,其中类加载机 ...

  9. java 加载类java_深入研究Java类加载机制

    深入研究Java类加载机制 类加载是Java程序运行的第一步,研究类的加载有助于了解JVM执行过程,并指导开发者采取更有效的措施配合程序执行. 研究类加载机制的第二个目的是让程序能动态的控制类加载,比 ...

最新文章

  1. 【正一专栏】齐达内能熬过2018年的春天吗?
  2. 一文讲解自动机器学习(AutoML)!
  3. python中有很多包管理工具、以下哪种不是_python试卷_共4页
  4. C++虚继承(四) --- /d1 reportSingleClassLayout插入看类内存布局
  5. mvc ajax post json数据,springmvc解决ajax post json格式数据的跨域问题
  6. Nginx 的 Location 配置指令块
  7. Linux| |对于UDP的学习
  8. vue node php,vue node 是什么
  9. matlab 产生任意概率密度的联合分布
  10. usbserialch340驱动安装失败_CH340驱动|CH340系列USB转串口驱动下载win7/win10 64位 - 欧普软件下载...
  11. vlan的理解以及华为access、trunk、hybrid三种链路对比
  12. FastReport动态改变字体颜色
  13. 低学历可以学习IT技术吗?
  14. granfana密码重置
  15. TS科普11 PES包句法解析
  16. Oracle 小数点特殊处理
  17. Python爬虫:wallhaven图片爬取
  18. 工业智能网关BL110应用之13:实现三菱 PLC FX3S 接入华为云平台
  19. SWIFT是什么意思?
  20. 【代码审计】iCMS_v7.0.7 admincp.app.php页面存在SQL注入漏洞分析

热门文章

  1. Python面向对象基础(二)
  2. python字典基础应用:制作一个披萨点餐流程
  3. CSS3动画和3D动画
  4. 十大经典的零食你吃过几样
  5. 锂离子电池电池容量特性_锂离子电池为什么会爆炸?
  6. MySQL+Java实现父子级联查询
  7. jeesite实战(三十一)——SSO单点登录
  8. double类型数组排序
  9. 开源JSON库Rapidjson与cJSON对比
  10. 营销做好“市场调研”“全景代入”即可超越同行