- 浏览: 481033 次
- 性别:
- 来自: 西安
-
文章分类
最新评论
-
752258:
...
Java文件操作(FIle类) [转] -
darrendu:
帮我解决了问题
启动出了问题:unexpected inconsistency;RUN fsck MANUALLY -
_lostman:
怎么反着来?
如果我现有一个第三方的库,如何在JAVA中调用? ...
java中JNI调用c++的dll -
caoruntao:
brother涛,你太牛了。博客访问量竟然有6W多。不得了呀
java clone -
passlicense:
好文章!顶~
unicode和ISO 8859-1
【转】 http://www.iteye.com/topic/136427 vm classLoader architecture : a, Bootstrap ClassLoader/启动类加载器 b, Extension ClassLoader/扩展类加载器 c, System ClassLoader/系统类加载器 b, User Custom ClassLoader/用户自定义类加载器(java.lang.ClassLoader的子类) 类加载器的特性: 1, 每个ClassLoader都维护了一份自己的名称空间, 同一个名称空间里不能出现两个同名的类。 Class Diagram: 类图中, BootstrapClassLoader是一个单独的java类, 其实在这里, 不应该叫他是一个java类。 它是在jvm启动时, 就被构造起来的, 负责java平台核心库。(具体上面已经有介绍) 启动类加载实现 (其实我们不用关心这块, 但是有兴趣的, 可以研究一下 ): 自定义类加载器加载一个类的步骤 : ClassLoader 类加载逻辑分析, 以下逻辑是除 BootstrapClassLoader 外的类加载器加载流程: 用Class.forName加载类 即在一般情况下, 保证同一个类中所关联的其他类都是由当前类的类加载器所加载的. 上图中 ClassLoader.getCallerClassLoader 就是得到调用当前forName方法的类的类加载器 线程上下文类加载器 以上代码摘自sun.misc.Launch的无参构造函数Launch()。 使用线程上下文类加载器, 可以在执行线程中, 抛弃双亲委派加载链模式, 使用线程上下文里的类加载器加载类. 大部分java app服务器(jboss, tomcat..)也是采用contextClassLoader来处理web服务。 线程上下文从根本解决了一般应用不能违背双亲委派模式的问题. 使java类加载体系显得更灵活. 随着多核时代的来临, 相信多线程开发将会越来越多地进入程序员的实际编码过程中. 因此, 当然, 好东西都有利弊. 使用线程上下文加载类, 也要注意, 保证多根需要通信的线程间的类加载器应该是同一个, 自定义的类加载器实现 使用该接口, 可以动态的加载class文件. 例如, 而使用类加载接口, 并加上自己的实现逻辑, 还可以定制出更多的高级特性. 比如, 一个简单的hot swap 类加载器实现: 这个类的作用是可以重新载入同名的类, 但是, 为了实现hotswap, 老的对象状态 而新实例所依赖的B类如果与老对象不是同一个类加载器加载的, 将会抛出类型转换异常(ClassCastException). 为了解决这种问题, HotSwapClassLoader自定义了load方法. 即当前类是由自身classLoader加载的, 而内部依赖的类 还是老对象的classLoader加载的. 输出 A classLoader is sun.misc.Launcher$AppClassLoader@19821f
主要负责jdk_home/lib目录下的核心 api 或 -Xbootclasspath 选项指定的jar包装入工作.
主要负责jdk_home/lib/ext目录下的jar包或 -Djava.ext.dirs 指定目录下的jar包装入工作
主要负责java -classpath/-Djava.class.path所指的目录下的类与jar包装入工作.
在程序运行期间, 通过java.lang.ClassLoader的子类动态加载class文件, 体现java动态实时类装入特性.
2, 为了实现java安全沙箱模型顶层的类加载器安全机制, java默认采用了 ” 双亲委派的加载链 ” 结构.
如下图:
因为, 它已经完全不用java实现了。
bootstrap classLoader 类加载原理探索
Class.forName使用的是被调用者的类加载器来加载类的.
这种特性, 证明了java类加载器中的名称空间是唯一的, 不会相互干扰.
java默认的线程上下文类加载器是 系统类加载器(AppClassLoader).
典型的例子有, 通过线程上下文来加载第三方库jndi实现, 而不依赖于双亲委派.
还有一些采用 hotswap 特性的框架, 也使用了线程上下文类加载器, 比如 seasar (full stack framework in japenese).
在编写基础设施时, 通过使用线程上下文来加载类, 应该是一个很好的选择.
防止因为不同的类加载器, 导致类型转换异常(ClassCastException).
defineClass(String name, byte[] b, int off, int len,ProtectionDomain protectionDomain)
是java.lang.Classloader提供给开发人员, 用来自定义加载class的接口.
在jdk中, URLClassLoader是配合findClass方法来使用defineClass, 可以从网络或硬盘上加载class.
需要通过其他方式拷贝到重载过的类生成的全新实例中来。(A类中的b实例)
B classLoader is sun.misc.Launcher$AppClassLoader@19821f
A.b classLoader is sun.misc.Launcher$AppClassLoader@19821f
reloaded A.b classLoader is sun.misc.Launcher$AppClassLoader@19821f
发表评论
-
java clone
2012-02-27 17:12 1361【转】http://zhengjunwei2007-163-c ... -
Java程序性能优化
2012-02-27 17:02 822一、避免在循环条件中使用复杂表达式 在不做编译优化的情况 ... -
Java 访问权限
2012-02-27 16:54 1229[转]http://www.cnblogs.com/itao/ ... -
Java方法继承、方法重载、方法覆盖小总结
2012-02-27 16:42 1152[转] http://blog.csdn.net/c ... -
关于 java 您不知道的 5 件事 系列
2011-08-31 15:16 846http://www.ibm.com/developerwor ... -
ConcurrentHashMap与CopyOnWriteArrayList比较
2011-08-31 15:10 1325【转】http://www.iteye.com/t ... -
ConcurrentHashMap Collections.synchronizedMap和Hashtable讨论
2011-08-31 15:09 1184[转]http://www.w3china.org/blog/ ... -
JAVA的Random类
2011-08-30 15:22 878【转】http://www.cnblogs.com ... -
Direct vs non-direct ByteBuffer
2011-08-30 14:55 1181[转]http://littcai.iteye.com/blo ... -
详细介绍Java垃圾回收机制
2011-08-29 22:57 1263【转】http://developer.51cto.com/a ... -
System.gc() 和System.runFinalization()
2011-08-29 22:52 1621The Java language provide ... -
Java对象的强、软、弱和虚引用
2011-08-29 21:43 914[转]http://developer.51cto.com/a ... -
java对象,引用,实例
2011-08-22 11:05 597[转]http://jzgl-javaeye.iteye.co ... -
垃圾收集解析
2011-08-22 09:15 814[转]http://www.cnblogs.com/rolle ... -
Java对象序列化ObjectOutputStream和ObjectInputStream示例
2011-08-21 16:23 1086[转]http://sjsky.iteye.com/blo ... -
Java i++原理及i=i++的问题说明
2011-08-20 16:21 1600[转]http://blog.sina.com.cn/s/bl ... -
Java中的transient,volatile和strictfp关键字
2011-06-21 16:36 968转:http://www.iteye.com/topic/52 ... -
如何使用Proxy模式及Java内建的动态代理机制
2011-06-09 20:09 9411.Proxy模式 代理模式支持将某些操作从实际的对象中 ... -
System.load和System.loadLibrary
2011-05-24 21:49 1468转:http://hi.baidu.com/mynetbean ... -
static块到底什么时候执行?
2011-05-19 18:34 1233转:http://www.iteye.com/topic/11 ...
相关推荐
Java的类加载器(ClassLoader)体系结构是JVM(Java虚拟机)中至关重要的一部分,它负责将类的字节码转换为运行时的类实例。本文将深入探讨启动类加载器、扩展类加载器、系统类加载器以及用户自定义类加载器,同时还...
破解java加密的ClassLoader.java,在classloader植入破解代码
### 深入了解Java ClassLoader与Bytecode #### 一、Java ClassLoader概述 **1.1 什么是ClassLoader** 在传统的C/C++程序中,整个程序被编译成一个可执行文件,运行时一次性加载到内存中。而Java程序则不同,它是...
在Java编程语言中,ClassLoader是一个至关重要的组成部分,它负责加载类到JVM(Java虚拟机)中。理解ClassLoader的工作原理以及如何定制它,对于深入学习Java的运行机制和进行高级应用开发具有重要意义。本篇文章将...
Java中的类加载器(ClassLoader)是Java虚拟机(JVM)的一个重要组成部分,它负责将类的.class文件从文件系统或者网络中加载到内存中,并转换为对应的Class对象。类加载器的工作流程主要包括加载、验证、准备、解析...
### Java ClassLoader与ClassPath详解 #### 一、概述 在Java编程中,类加载机制是十分关键的一个环节。类加载器(`ClassLoader`)负责将编译后的`.class`文件加载到Java虚拟机(JVM)中执行,而类路径(`ClassPath...
Java ClassLoader是一个核心的Java运行时组件,负责加载类到Java虚拟机(JVM)中。它是Java平台的独特特性,因为它允许动态加载类,增强了软件的可扩展性和灵活性。这篇博文(虽然链接不可用)可能深入探讨了...
Java 体系结构图是理解Java编程语言及其生态系统的关键工具,尤其对于初学者而言,它能够清晰地展现Java的各个组成部分以及它们之间的关系。这个压缩包包含的“体系结构图”很可能是以图形形式展示了Java的核心概念...
二、ClassLoader的体系结构 ClassLoader形成一个树状结构,BootstrapClassLoader是根节点,ExtensionClassLoader是其子节点,SystemClassLoader是ExtensionClassLoader的子节点。用户还可以自定义ClassLoader,插入...
在Java的ClassLoader层次结构中,主要有以下几类加载器: 1. **Bootstrap ClassLoader**:这是最基础的类加载器,由JVM直接创建,负责加载JDK的根目录(rt.jar等)中的核心类库。 2. **Extension ClassLoader**:...
在Java编程语言中,ClassLoader是核心组件之一,它负责加载类到JVM(Java虚拟机)中。理解ClassLoader的工作机制以及类变量初始化的顺序对于深入理解Java运行时环境至关重要。这篇博文将探讨这两个主题。 首先,让...
### Java ClassLoader详解 #### 一、ClassLoader概念与作用 在Java中,`ClassLoader`扮演着极其重要的角色,它负责加载程序所需的类到Java虚拟机(JVM)中。这一过程不仅仅是简单地读取字节码文件(.class),还包括对...
Java ClassLoader机制是Java运行时环境中的核心组件之一,它负责加载类到JVM(Java虚拟机)中,使得程序能够执行。理解ClassLoader的工作原理对于优化应用性能、处理类加载问题以及实现自定义加载器至关重要。 首先...
在 Java 语言中,类加载器(ClassLoader)是 Java 运行时环境的核心组成部分之一,它负责将编译后的 `.class` 文件加载到 JVM 中执行。从 JDK 1.0 开始,随着 Java Applet 的出现以及网络应用的需求增加,类加载机制...
ClassLoader 的层次结构是双亲委托模型,每个 ClassLoader 实例都有一个父类加载器的引用(不是继承关系,是一个包含的关系),虚拟机内置的类加载器(Bootstrap ClassLoader)本身没有父类加载器,但可以用作其它 ...
### Java ClassLoader原理详解 #### 摘要 本文探讨了Java虚拟机(JVM)中的一个重要特性:动态类加载(Dynamic Class Loading)。这一机制为Java平台提供了强大的能力,允许在运行时安装软件组件,例如从网络下载...
Java ClassLoader学习总结 Java 类加载机制是 Java 中一个非常重要的机制,它负责加载 Class 文件到 JVM,以供程序使用。ClassLoader 是 Java 中的一个抽象类,它的主要作用是加载 Class 文件到 JVM 中。...
让Java支持热加载是个不错的想法。如何做到的呢? 1. 定义好接口和实现类 2. 让代理类通过反射的方式调用实现类,对外暴露的是代理类。 3. 自定义URLClassLoader。检查实现类.class文件的...Java自定义classloader;
### Java虚拟机中ClassLoader概述与双亲委托机制详解 #### 一、ClassLoader概念与作用 在Java编程语言中,`ClassLoader`是一个非常重要的组件,它负责加载程序运行所需的类文件到Java虚拟机(JVM)中。`ClassLoader`...