`
cuiyi.crazy
  • 浏览: 53125 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

ClassLoader专题(一):ClassLoader基础

阅读更多

ClassLoader 专题(一): ClassLoader 基础 <!----> <o:p> </o:p>

ClassLoader 专题(二):从 Servlet 容器看 ClassLoader 机制的妙用

JVM启动,会形成3个类加载器组成的初始化加载器层次结构:
bootstap classloader (加载核心类)
        ||
extension classloader(加载ext(目录),即java.ext.dirs())
        ||
system classloader   (加载-classpath或者java.class.path或者CLASSPATH)


ClassLoader机制:
a)全盘负责:一个classloader加载一个class后,这个class所引用或者依赖的类也由这个classloader载入,除非显示的用另一个classloader载入
b)委托机制:先由父加载器加载,除非父加载器找不到时才从自己的类路径中去寻找
c)Cache机制:classloader采用缓存机制,即先查cache;若cache中保存了这个class就直接返回;若无,才从文件读取和转化为class并放入cache

 

ClassLoader加载类顺序:
1)检查cache是否有该类:
    11)若有直接返回
    12)若无,请求父类加载
        121) 若无父,则从bootstap classloader加载
2)加载:
    21)寻找class文件(丛与此classloader相关的类路径中寻找)
    22)从文件载入class
    23)找不到则抛出ClassNotFoundeException
3)扩展:
    记载时即2),覆写findClass可以实现自己的载入策略
    记载时即2),覆写loadClass来实现自己的载入过程


如何实现运行时动态载入与更新
本质:只要动态改类搜索路径和清除classloader的cache已载入的class就ok
做法:
1)继承ClassLoader:覆写loadClass方法,动态寻找class文件
2)只要重新使用一个新的类搜索路径来new一个classloader就可以,这样既更新了类的搜索路径以便来载入新的class,也更新生成了一个空白的cache


classloader载入的方式
1)Pre-loading 预先载入,载入基础类
2)load-on-demand 按需求载入


JDK为啥有两个JRE?
JDK中jre是运行java本身的程序,如javac
ProgramFile(默认安装)中jre是运行用户编写的java程序



crazycy 2007-02-01 20:48 发表评论
分享到:
评论

相关推荐

    JVM面试专题.zip

    Java虚拟机(JVM)是Java程序运行的基础,它是一个抽象的执行环境,负责解析字节码并执行Java代码。在面试中,JVM相关的知识是Java开发者必须掌握的重要领域,尤其是在高级或资深职位的面试中。下面我们将深入探讨...

    java各类面试题,很有用哦!不看后悔

    Java是世界上最流行的编程语言之一,尤其在企业级应用开发领域占据主导地位。为了在激烈的求职竞争中脱颖而出,Java开发者必须对各种面试题有深入的理解。本资料包集合了丰富的Java面试题,涵盖从基础概念到高级特性...

    设计模式面试专题.zip

    设计模式是软件工程中的一种最佳实践,用于解决在开发过程中经常遇到的问题,提供了一种标准的解决...通过阅读"设计模式面试专题.pdf",你将能够更系统地学习和准备设计模式相关的面试问题,为你的职业生涯添加亮点。

    【面试资料】-(机构内训资料)JVM面试专题.zip

    【JVM面试专题】是针对Java开发者在求职面试过程中可能会遇到的JVM相关问题的集锦,涵盖了JVM的基础知识、内存模型、垃圾收集、性能调优等多个关键领域。了解和掌握这些知识点对于成为一名优秀的Java程序员至关重要...

    性能调优专题-jvm类加载机制-performance-jvmclassloader.zip

    本专题"性能调优专题-jvm类加载机制-performance-jvmclassloader"深入探讨了如何通过理解并优化类加载过程来提升应用程序的性能。 1. **类加载器的层次结构** Java中的类加载器分为Bootstrap ClassLoader、...

    JVM面试专题1

    - **双亲委派模型**:类加载请求会向上委托给父加载器,直到Bootstrap ClassLoader,找不到则返回,再由子加载器尝试加载,避免类冲突。 **3. Java 内存分配** Java 内存分为以下几个区域: - **栈内存**:存储...

    java入门普及专题讲座

    熊猫老师又一鼎力之作,自己做这个PPS花了一天半的时间,唉,谁叫咋笨呢。呵呵,但是达到了预期的目的。 本教程从Java的入门开始讲起,最后落脚于网络编程,对Java中比较难懂的(可能对我来说目前比较难懂)诸如反射...

    android源码开发实战17.02.zip

    在Android源码开发实战17.02这个专题中,我们深入探讨了Android系统的底层机制以及如何通过源码进行应用层的开发优化。这是一份针对Android开发者的高级教程,旨在提升开发者对Android操作系统的理解,增强其在系统...

    水木清华站∶Java版精华区 含jsp及js等集合.chm

    [目录]关于classloader 2. [目录]Java汉字问题 3. [目录]Java中的界面处理 1. [目录]Java中的鼠标操作 2. [目录]如何使画面不闪烁? 4. [目录]Java与Internet 1. [目录]Socket方面的...

Global site tag (gtag.js) - Google Analytics