码迷,mamicode.com
首页 > 其他好文 > 详细

JVM 类加载器

时间:2019-06-06 13:55:35      阅读:70      评论:0      收藏:0      [点我收藏+]

标签:通过   nbsp   类加载   col   返回结果   作用   加载   sgi   class   

【概述】

  虚拟机设计团队把类加载阶段中的 “通过一个类的全限定名来获取描述此类的二进制字节流” 这个动作放到 Java 虚拟机外部去实现,以便让应用程序自己决定如何去获取所需要的类。实现这个动作的代码模块称为 “类加载器”。

  类加载器可以说是 Java 语言的一项创新,也是 Java 语言流行的原因之一,它最初是为了满足 Java Applet 的需求而开发出来的。虽然目前 浏览器上的 Java Applet 技术基本上已经 “死掉”,但类加载器却在类层次划分、OSGI、热部署、代码加密等领域大放异彩,成为 Java 技术体系的一块重要的基石。


【Q】:如何判断两个类是否 “相等”?

【A】:类加载器虽然只用于实现类的加载动作,但它在 Java 程序中起的作用却远远不限于类的加载阶段。对于任意一个类,都需要由加载它的类加载器和这个类本身一同确立其在 Java 虚拟机中的唯一性,每一个类加载器,都拥有一个独立的类名称空间。也可以说,比较两个类是否 “相等”,只有这两个类时由同一个类加载器加载的前提下才有意义,否则,即使这两个类来源于同一个 Class 文件,被同一个虚拟机加载,只要加载它们的类加载器不同,那这两个类就必定不相等。

  这里所指的“相等”,包括代表类的 Class 对象的 equals() 方法、isAssignableFrom() 方法、isInstance() 方法的返回结果,也包括使用 instanceof 关键字做对象所属关系判定等情况。如果没有注意到类加载器的影响,在某些情况下可能会产生迷惑性的结果,下面的代码展示了不同类加载器对 instanceof 关键字运算的结果的影响。

 

JVM 类加载器

标签:通过   nbsp   类加载   col   返回结果   作用   加载   sgi   class   

原文地址:https://www.cnblogs.com/zlxyt/p/10984454.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!