`
glacier3
  • 浏览: 384873 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

根类加载器的一个特性

阅读更多
java 代码
  1.   
  2. public class Test {   
  3.   
  4.         public static void main(String[] args) {   
  5.            
  6.         Class c;   
  7.         ClassLoader cl,cl1;   
  8.         cl=ClassLoader.getSystemClassLoader();   
  9.         System.out.println(cl);   
  10.         while(cl!=null){   
  11.             cl1=cl;   
  12.             cl=cl.getParent();   
  13.             System.out.println(cl1+"'s parent is  "+cl);               
  14.         }   
  15.            
  16.            
  17.         try{   
  18.                
  19.             c=Class.forName("java.lang.Object");   
  20.             cl=c.getClassLoader();   
  21.             System.out.println("java.lang.Object's loader is "+cl);   
  22.                
  23.             c=Class.forName("Test");   
  24.             cl=c.getClassLoader();   
  25.             System.out.println("Test's loader is "+cl);   
  26.                
  27.                
  28.         }catch(Exception e){   
  29.                
  30.                
  31.         }   
  32.            
  33.            
  34.   
  35.     }   
  36.   
  37. }   

运行结果:
sun.misc.Launcher$AppClassLoader@19821f
sun.misc.Launcher$AppClassLoader@19821f's parent is  sun.misc.Launcher$ExtClassLoader@addbf1
sun.misc.Launcher$ExtClassLoader@addbf1's parent is  null
java.lang.Object's loader is null
Test's loader is sun.misc.Launcher$AppClassLoader@19821f

注意红色区域的运行结果.之所以最后他们返回的父加载根加载器为NULL的原因是因为JAVA虚拟机并不会向JAVA程序提供根类加载器的引用,而是返回NULL来表示根类加载器,这样做是为了保护JAVA虚拟机的安全,防止黑客利用根加载器来加载非法的类,从而破坏JAVA虚拟机的核心代码.

 

 

分享到:
评论

相关推荐

    类加载说明.pdf

    这个类加载器没有父类加载器,因为它本身是由C++编写并在JVM启动时初始化的。 2. **扩展类加载器(Extension ClassLoader)**:它负责加载`$JAVA_HOME/lib/ext`目录下的类库或由`java.ext.dirs`系统变量指定的路径中...

    webshpere classloader 原理

    - 每个类加载器都有一个父类加载器(除了根类加载器)。 - 请求加载类只能传递给父类加载器,而不能从子类加载器加载类。 ##### 类加载器概述(续) 3. **委托模式:** - 每个类加载器都有一个可配置或不可配置...

    [浅析J2EE应用服务器的JAVA类装载器]python回朔异常的模块.docx

    1. 一致性规则:每个类加载器维护一个名字空间,确保同一个类不能被同一个类加载器加载两次。这意味着不同类加载器加载的同名类是相互独立的,不能直接交互。 2. 委托规则:在加载类之前,类加载器总是先询问其父...

    CSS3绘制6根彩色横条加载特效.zip

    综上所述,这个"CSS3绘制6根彩色横条加载特效"涵盖了CSS3的多个核心特性,包括伪类选择器、渐变、动画、Flexbox布局以及响应式设计。通过理解和掌握这些技术,开发者能够创建出更富吸引力和用户体验的网页加载特效。

    jvm相关1

    1. **Bootstrap类加载器**(根类加载器):负责加载JRE核心库,如rt.jar。 2. **Extension类加载器**:加载扩展库,如jre/lib/ext目录下的jar文件。 3. **System类加载器**(应用类加载器):加载用户类路径...

    JVM整理1

    1. **内置类加载器**:包括根类加载器(Bootstrap,C++实现)、扩展类加载器(Extension,Java实现)和系统类加载器(System或AppClassLoader,加载应用类路径上的类)。 2. **用户自定义类加载器**:允许开发者创建...

    java虚拟机工作原理

    JVM通过类名、类所在的包名及类加载器的实例ID来唯一标识一个类。 2. **执行引擎**:执行字节码,处理本地方法调用。这是JVM的核心组件,负责解释执行Java字节码指令,或调用本地方法库中的方法。 3. **运行时数据...

    Java虚拟机类装载的原理及实现

    所有JVM都内置了一个特殊的类装载器——根装载器(Bootstrap ClassLoader),它负责装载Java核心类库。当需要装载非设计时已知的类时,则需要使用用户自定义的类装载器。 #### 实例演示 以下是一个简单的示例,...

    Java基础学习13.pdf

    类加载器分为Bootstrap ClassLoader(根类加载器)、Extension ClassLoader(扩展类加载器)和Application ClassLoader(系统类加载器),遵循双亲委派机制。 8. **访问修饰符**:Java的访问修饰符有private、...

    Java面试题专辑整理(内含100题左右各类型的面试题与答案)

    - 每个类加载器都有其特定的职责范围,包括从不同的位置加载类。 - **三种默认类加载器:** - **Bootstrap ClassLoader (启动类加载器):** 负责加载核心类库,如rt.jar中的类。它是所有类加载器的父类加载器,且...

    JS 动态树 异步加载树 xloadtree WebFXLoadTree

    xloadtree 是一个JavaScript库,用于创建具有上述特性的树形控件。它允许开发者通过WebFXLoadTree对象来构建异步加载的树结构。WebFXLoadTree是基于WebFX库的一个扩展,WebFX是一个强大的JavaScript库,提供了许多...

    阿里Java面试题集锦

    ClassLoader分为启动类加载器、扩展类加载器和应用程序类加载器,加载顺序是从父到子,即先由启动类加载器加载,然后扩展类加载器,最后是应用程序类加载器。用户自定义的类加载器通常在应用程序类加载器之后进行...

    ubi根文件系统制作

    7. **配置启动**:更新设备的引导加载器(如u-boot)配置,使其能够初始化ubi并挂载根文件系统。这可能涉及到修改bootcmd_script环境变量或者设备树源码。 在整个过程中,你可能需要关注的一些关键点包括:正确配置...

    Linux内核移植和根文件系统制作

    这部分通常涉及引导加载器如何加载内核和根文件系统映像,以及系统启动后的初始化过程。 ### 第四部分:总结 这一章节是对整个内核移植和根文件系统制作过程的回顾,强调了关键步骤和注意事项,有助于开发者巩固所...

    修改Tomcat默认访问根目录的方法

    在Web应用开发和部署中,Apache Tomcat是一个广泛使用的开源Servlet容器,它用于提供运行Java代码的环境,使Java代码能够在Web服务器上运行。Tomcat作为Jakarta EE技术的一部分,经常被用来作为独立的Web服务器或与...

    7、垃圾回收与JAVA运行过程.pdf

    Java垃圾回收机制是Java语言中的一个重要特性,它自动管理程序中的内存,避免程序员手动进行内存管理,从而减少了程序出现内存泄漏或悬挂指针的风险。在Java中,对象的生命周期分为创建、使用和垃圾回收三个阶段。 ...

    JVM原理讲解和调优,详细讲解JVM底层

    类加载器从根加载器开始,按层次结构逐级加载类。JVM提供了三种类加载器:Bootstrap ClassLoader、Extension ClassLoader和Application ClassLoader,分别用于加载Java核心类库、扩展类库和应用程序类库。此外,JVM...

    Java 内存简要

    - **根加载器(Bootstrap ClassLoader)**: 最基础的类加载器,加载Java核心类库。 - **扩展加载器(Extension ClassLoader)**: 加载扩展目录下的类库。 - **应用加载器(Application ClassLoader)**: 默认的类...

Global site tag (gtag.js) - Google Analytics