zoukankan      html  css  js  c++  java
  • 看视频时,类加载器没太理解,现在再整理下几个要点

     

    类加载器负责把类加载到java虚拟机即JVM中,指定类的名称,类加载器就会定位这个类的定义,每一个java类必须由类加载器加载。

    当启动JVM的时候,我们可以使用三个类加载器:引导类加载器、扩展类加载器、应用程序类加载器

    1.引导类加载器仅仅负责加载核心的Java库,比如位于<JAVA_HOME>/jre/lib 目录下的vm.jar,core.jar。这个类加载器,是JVM核心部分,是用native代码写成的。

    2. 扩展类加载器负责加载扩展路径下的代码,一般位于<JAVA_HOME>/jre/lib/ext  或者通过java.ext.dirs 这个系统属性指定的路径下的代码。这个类加载器是由sun.misc.Launcher$ExtClassLoader 实现的。

    3.应用程序类加载器负责加载java.class.path(映射系统参数 CLASSPATH的值) 路径下面的代码,这个类加载器是由 sun.misc.Launcher$AppClassLoader 实现的。

    当处理类加载器时,父委托模式是一个需要理解的关键概念,它规定:类加载器在加载自己的类之前,可以委托先加载父类,父类加载器可以是客户化的类加载器或引导类加载器。但是有一点很重要,类加载器只能委托自己的父类加载器,而不能是子类加载器,即只能向上不能向下。

    自定义类加载器:虽然在绝大多数情况下,系统默认提供的类加载器实现已经可以满足需求。但是在某些情况下,您还是需要为应用开发出自己的类加载器。比如您的应用通过网络来传输 Java 类的字节代码,为了保证安全性,这些字节代码经过了加密处理。这个时候您就需要自己的类加载器来从某个网络地址上读取加密后的字节代码,接着进行解密和验证,最后定义出要在 Java 虚拟机中运行的类来。


    Le王冬冬 博客分享地址: http://www.cnblogs.com/dongdong230/ 每个人都应做一天攻城狮
  • 相关阅读:
    uiwebview的基本使用
    当你在浏览器地址栏输入一个URL后回车,将会发生的事情?
    开车误闯红灯的补救方法 (以及由此引发的一些思考)
    Android源码剖析之Framework层基础版(窗口、linux、token、Binder)
    Android项目框架之图片加载框架的选择
    通过runtime替换系统类实现的代码(从github开源库fdstackview中摘录)
    awakeFromNib相关知识详解
    推送服务推荐
    由微博图床挂掉之后想到的
    Mac下如何配置环境变量
  • 原文地址:https://www.cnblogs.com/dongdong230/p/4183118.html
Copyright © 2011-2022 走看看