`
glacier3
  • 浏览: 376981 次
  • 性别: 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虚拟机的核心代码.

 

 

分享到:
评论

相关推荐

    深入理解_Java_虚拟机 JVM_高级特性与最佳实践

    正统的类加载器架构 / 232 9.2.2 OSGi:灵活的类加载器架构 / 235 9.2.3 字节码生成技术与动态代理的实现 / 238 9.2.4 Retrotranslator:跨越JDK版本 / 242 9.3 实战:自己动手实现远程执行功能 / 246 9.3.1 ...

    javaSE代码实例

    1.4 第一个Java程序 8 1.4.1 开发源代码 8 1.4.2 编译运行 9 1.5 小结 11 第2章 基本数据类型——构建Java 大厦的基础 12 2.1 源代码注释 12 2.1.1 单行注释 12 2.1.2 区域注释 12 2.1.3 文档...

    linux.chm文档

    hdparm -i /dev/hda 罗列一个磁盘的架构特性 hdparm -tT /dev/sda 在磁盘上执行测试性读取操作 cat /proc/cpuinfo 显示CPU info的信息 cat /proc/interrupts 显示中断 cat /proc/meminfo 校验内存使用 cat /...

    wemall商城 v7.0 php微信商城系统

    wemall7.0 开源系统,基于thinkphp5开发,支持composer,优化核心,减少依赖,基于全新的架构思想和命名空间。...安装完成后访问系统时会在项目根目录生成名为addons的目录,在该目录中创建需要的插件。

    springboot参考指南

    使用一个J2EE管理的事务管理器 iv. 32.4. 混合XA和non-XA的JMS连接 v. 32.5. 支持可替代的内嵌事务管理器 xii. 33. Spring集成 xiii. 34. 基于JMX的监控和管理 xiv. 35. 测试 Spring Boot参考指南 4 i. 35.1. 测试...

    好用的代码生成源码

    在temppate目录创建一个文件,如${className}SpringControler.java 则代码生成器会自动将该模板文件加载并生成该文件 充分利用各种文件的注释 如在.xml中我们可以使用 在.properties文件中我们可以使用 #generator-...

    ASP.NET的网页代码模型及生命周期

    可以说,.aspx页面的代码也即将会生成一个类,并包含内部逻辑。在浏览器浏览该页面时,.aspx页面的类实例化并输出到浏览器,反馈给浏览者。ASP.NET单文件页模型运行示例图如图4-3所示。 图4-3 单文件页模型 4.1.3 ...

    AutoPlay_Menu_Builder6.0.1328注册版

     创建自动运行的光盘如果光盘的根目录下有一个命名为 autorun.inf 的文件,操作系统就会自动加载该文件中指定的程序,并作为自动运行菜单将其启动。通常,autorun.inf 文件包括以下几行内容。  字段就是光盘自动...

    AutoPlay_Menu_Builder5.5.0.1328注册版

     创建自动运行的光盘如果光盘的根目录下有一个命名为 autorun.inf 的文件,操作系统就会自动加载该文件中指定的程序,并作为自动运行菜单将其启动。通常,autorun.inf 文件包括以下几行内容。  字段就是光盘自动...

    ARM_Linux启动分析.pdf

    i386系统中一般都有BIOS做最初的引导工作,那就是将四个主分区表中的第一个可引导 分区的第一个扇区加载到实模式地址0x7c00上,然后将控制转交给它。 在“arch/i386/boot” 目录下,bootsect.S是生成引导扇区的...

    入门学习Linux常用必会60个命令实例详解doc/txt

    在Linux 和Unix系统上,所有文件都是作为一个大型树(以/为根)的一部分访问的。要访问CD-ROM上的文件,需要将CD-ROM设备挂装在文件树中的某个挂装点。如果发行版安装了自动挂装包,那么这个步骤可自动进行。在Linux...

    iPhone开发秘籍.part2.rar

    8.12 添加一个页面指示器控件.....216 8.13 秘诀:定制工具栏.....218 8.14 小结.....221 第9章人物、地点和事件......223 9.1 地址簿框架.....223 9.1.1 Address Book UI.223 9.1.2 Address Book..224 9.2 秘诀:...

    iPhone开发秘籍.part4.rar

    8.12 添加一个页面指示器控件.....216 8.13 秘诀:定制工具栏.....218 8.14 小结.....221 第9章人物、地点和事件......223 9.1 地址簿框架.....223 9.1.1 Address Book UI.223 9.1.2 Address Book..224 9.2 秘诀:...

    iPhone开发秘籍.part1.rar

    8.12 添加一个页面指示器控件.....216 8.13 秘诀:定制工具栏.....218 8.14 小结.....221 第9章人物、地点和事件......223 9.1 地址簿框架.....223 9.1.1 Address Book UI.223 9.1.2 Address Book..224 9.2 秘诀:...

    iPhone开发秘籍

    8.12 添加一个页面指示器控件 216 8.13 秘诀:定制工具栏 218 8.14 小结 221 第9章 人物、地点和事件 223 9.1 地址簿框架 223 9.1.1 address book ui 223 9.1.2 address book 224 9.2 秘诀:访问地址簿图像...

    JavaScript权威指南(第6版)

    弗兰纳根(David Flanagan)是一名程序员,也是一名作家,他在O’Reilly出版的其他畅销书还包括《JavaScript Pocket Reference》、《The Ruby Programming Language》、以及《Java in a Nutshell》。David毕业于麻省...

    JavaScript权威指南(第6版)中文文字版

    弗兰纳根(David Flanagan)是一名程序员,也是一名作家,他在O’Reilly出版的其他畅销书还包括《JavaScript Pocket Reference》、《The Ruby Programming Language》、以及《Java in a Nutshell》。David毕业于麻省...

    JavaScript权威指南(第6版) 中文版

    作者:(美国)弗兰纳根(David Flanagan) 译者:淘宝前端团队 目录 前言 1 第1章 javascript概述 5 1.1 javascript语言核心 8 1.2 客户端javascript 12 第一部分 javascript 语言核心 第2章 词法结构 25 2.1 字符集 ...

    精通AngularJS part1

    创建一个基于控制器的分页指令258 理解指令控制器和链接函数的区别258 注入依赖259 编译过程259 获取其他控制器260 获取嵌入函数261 创建一个手风琴指令套件261 在手风琴组件中使用指令控制器262 实现...

Global site tag (gtag.js) - Google Analytics