zoukankan      html  css  js  c++  java
  • classLoader的工作机制

    ClassLoader的主要方法

    1.loadClass(String name) 给定一个类名,记载一个类。

    2.defineClass(byte[] b, int off, int len) 根据给定的字节数组定义一个类

    3.findClass(String name) 查找一个类

    4.findLoadedClass(String name),寻找一个被加载的类。

    ClassLoader的等级加载机制

    整个JVM提供三层ClassLoader

    1.Bootstrap ClassLoader (启动类加载器),主要记载jvm自身记载所需要的类,这个classloader完全是由jvm自身控制的。别人也访问不到这个类。

    2.ExtClassLoader (扩展类加载器), 服务于system.getProperty("java.ext.dirs")中。

    3.AppClassLoader,服务于system.getProperty("java.class.path")中。

    我们在应用中提取的顶级classloader顶级父类是ExtClassLoader 。当试图获取一个类的classloader时,获取的是null,意味着是启动类加载器。

    Classloader的双亲委托模式

    在类记载的时候,系统会判断当前的类是否已经被加载,如果已经被加载,就会直接返回可用的类,否则就会尝试加载,再尝试加载时,会尝试双亲处理,如果双亲请求失败,则会自己处理。

    实现类的热部署

    JVM表示一个类是否是同一个类有两个条件:

    1.类的完整类名是否一样。

    2.砍价在这个类的classloader是否是一样的。

    所以实现类的热部署可以创建不同的classloader对象,然后通过这个不同的实例对象加载同名的类。

  • 相关阅读:
    Java的家庭记账本程序(K)
    构建之法阅读笔记01
    Java的家庭记账本程序(J)
    iOS-CALayer实现简单进度条
    iOS-CALayer
    iOS-CAEmitterLayer(粒子效果)
    iOS-OpenGLES 简单渲染
    iOS-CoreImage简单使用
    iOS富文本-NSAttributedString简单封装
    iOS后台运行
  • 原文地址:https://www.cnblogs.com/caobojia/p/6852410.html
Copyright © 2011-2022 走看看