`
lanqiaoyeyu
  • 浏览: 25082 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

谈谈类加载器

    博客分类:
  • Java
 
阅读更多
类加载器
一、简要介绍什么是类加载器和类加载器的作用
1、Java虚拟机中可以安装多个类加载器,系统默认三个主要的类加载器,每个类加载器特定位置的类:BootStrap,ExtClassLoader,AppClassLoader
2、类加载器也是Java类,因为其他是Java类的类加载器本身也要被类加载器加载,显然必须有第一个类加载器不是Java类,这正是BootStrap。
3、Java虚拟机中的所有类装载器采用具有父子关系的树形结构进行组织,在实例化每个类装载器对象时,需要为其指定一个父级类装载器对象或者默认采用系统类装载器为其父级类加载
4、类加载器之间的父子关系和管辖范围图

5、类加载器的委托机制
1)当Java虚拟机要加载一个类时,到底派出哪个类加载器去加载呢?
 首先当前线程的类加载器去加载线程中的第一个类,如果类A中引用了类B,Java虚拟机将使用加载类A的类装载器来加载类B,还可以直接调用ClassLoader.loadClass()方法来指定某个类加载器去加载某个类,每个类加载器加载时,又先委托给其上级类加载器,当所有祖宗类加载器没有加载到类,回到发起者类加载器,还加载不了,则抛出ClassNotFoundException,不是再去找发起者类加载器的儿子,因为没有getChid方法,即使有,那有多个儿子,找哪个呢?每个ClassLoader本身只能分别加载特定位置和目录中的类,但它们可以委托其他的类装载器去加载类,这就是类加载器的委托模式。

另外:能不能自己写个类叫java.lang.System?
可以,但是一般不推荐这么做,因为类加载是采用委托机制的,Java虚拟机总会找到由系统提供的System。
  • 大小: 54.7 KB
分享到:
评论

相关推荐

    day17-类加载器和反射.zip

    Java的类加载机制遵循“双亲委派模型”,这意味着当一个类加载器收到加载类的请求时,它会先委托给父类加载器,只有当父类加载器无法找到该类时,子类加载器才会尝试自己去加载。这种设计保证了核心库的稳定性和安全...

    自定义类加载代码

    默认情况下,系统提供了三个内置的类加载器:Bootstrap ClassLoader(引导类加载器)、Extension ClassLoader(扩展类加载器)和AppClassLoader(应用程序类加载器)。自定义类加载器允许开发者根据特定需求扩展加载...

    安卓图片加载缓存相关-Android-异步图片加载器.zip

    "安卓图片加载缓存相关-Android-异步图片加载器.zip"这个压缩包中可能包含了一个实现异步图片加载和缓存的示例项目。异步加载能够避免UI线程阻塞,提高用户体验,而缓存机制则能减少网络请求,加快图片显示速度。 ...

    Java第9章 管理类文件含源代码

    当程序需要使用一个类时,JVM会通过类加载器找到对应的类文件,并进行一系列操作,确保类的安全性和正确性。这个过程对于理解和优化程序性能至关重要,因为类加载的时机和方式可以影响到程序的启动速度和内存占用。 ...

    java编程经验汇总

    这里我们将深入探讨Java的动态加载机制、类加载器的工作原理以及JDK和JRE的区别。 首先,让我们来谈谈Java的动态加载机制。Java语言的一个显著特点是它的类加载机制,它允许程序在运行时动态地加载和使用类。当你在...

    动态加载dex动态加解密dex文件

    `DexClassLoader`是Android系统提供的一个类加载器,它扩展了`PathClassLoader`,允许开发者指定额外的Dex文件路径。使用`DexClassLoader`,我们可以将新的Dex文件加载到已经运行的应用中,实现按需加载功能,降低...

    java8rt.jar源码-jvm:jvm入门jvm面试题

    谈谈JVM中,类加载器你的认识? rt-jar ext application 1、JVM的位置 2、JVM的体系结构 大多数将内存分配为Method Area(方法区)、Heap(堆)、Program Counter Register(程序计数器)、JAVA Method Stack(JAVA方法栈)...

    java对象和类对象和类

    6. 类加载机制:Java中的类是动态加载的,当首次使用某个类时,JVM会通过类加载器加载对应的.class文件。 7. 内存管理:包括堆内存和栈内存,对象主要存储在堆中,局部变量存储在栈中。Java的垃圾回收机制自动管理...

    SICXE:SICXE-系统编程-Shell汇编程序加载器链接器

    《SICXE:深入理解Shell汇编程序加载器与链接器》 在计算机科学的世界里,系统编程是一项至关重要的技能,它涉及到操作系统底层的工作原理,包括如何执行指令、管理内存以及处理程序的运行流程。SICXE是一个用于...

    互联网高频Java后端面试题20道(适合1~3年)V1.0.39.docx

    类加载器分为不同的层次,包括启动类加载器、扩展类加载器和应用程序类加载器,根据类的来源和命名空间进行加载。 2. **运行时数据区**:包括堆内存、栈内存、方法区、本地方法栈和程序计数器。其中,堆内存存储...

    心得.rar心得.rar

    5. **Java类加载器体系结构**:深入解析Java的类加载过程,包括启动类加载器、扩展类加载器、系统类加载器和自定义类加载器的层次关系,以及双亲委托模型。 6. **Java偏向锁实现原理**:解释了偏向锁是如何减少无...

    全套JVM面试题!面试必备!

    类加载器主要有Bootstrap ClassLoader、Extension ClassLoader、Application ClassLoader和自定义类加载器。 5. **JVM如何调优?** JVM调优主要包括堆大小调整、新生代与老年代比例设置、GC策略选择、内存泄露检测...

    Java虚拟机规范SE8.rar

    双亲委派模型是类加载的核心机制,新加载的类会先尝试由其父类加载器加载,只有当父类加载器无法加载时,才会由当前类加载器加载。 再来谈谈字节码执行。Java源代码经过编译后生成.class文件,里面包含的就是字节码...

    谈谈IntersectionObserver懒加载的具体使用

    IntersectionObserver懒加载是一种高效优化网页性能的技术,通过监控页面元素是否出现在用户可视区域内来决定是否加载资源,从而减少不必要的网络请求,提升用户体验。这个技术基于Intersection Observer API,它...

    20道面试官常问的JVM面试题!.zip

    Bootstrap ClassLoader、Extension ClassLoader、AppClassloader(也叫System ClassLoader)和自定义类加载器。 16. **双亲委派模型是什么?** 类加载时,会先尝试由父类加载器加载,只有父类加载失败才会尝试...

    Java虚拟机规范(Java_SE_7).rar

    1. 类加载机制:JVM按照类路径和命名空间加载类文件,包括引导类加载器、扩展类加载器和应用程序类加载器。类加载过程包括加载、验证、准备、解析和初始化五个阶段。 2. 内存管理:JVM内存主要分为堆、栈、方法区、...

    1谈谈对java平台的理解1

    比如,Java的类加载机制,包括Bootstrap、Application和Extension Class-loader等类加载器的角色,以及加载、验证、链接、初始化的流程。此外,垃圾收集机制也是重点,如SerialGC、Parallel GC、CMS、G1等垃圾收集器...

    通过Java字节码发现有趣的内幕之初始化篇(下)Java开

    在Java中,当类被首次引用时,JVM会通过类加载器将其加载到内存中。这个过程包括了加载、验证、准备、解析和初始化五个阶段。其中,初始化阶段是执行类的初始化方法()的时刻,它包含了类的所有静态变量的初始化和...

    第1讲 谈谈你对Java平台的理解1

    - **JVM内部机制**:包括类加载器(Bootstrap、Extension和Application Class-Loader)、内存模型(堆、栈、方法区等)、垃圾收集器(SerialGC、Parallel GC、CMS、G1等)以及JVM调优相关的知识。 - **JDK工具**:如...

Global site tag (gtag.js) - Google Analytics