- 浏览: 82302 次
- 性别:
- 来自: 上海
最新评论
-
surprising:
[color=darkred][/color]交换机
jdk rmi 代码分析 -
weibei:
what?
java.lang.reflect.Type
一般情况,jdk会产生3个classloader,是Bootstrap Classloader,Extension Classloader和AppClassloader,其中Bootstrap是用c++编写得,我们是看不到它得,打印出来是null,是用来加载核心类得
Bootstrap相关的系统参数为sun.boot.class.path,和命令行参数-Xbootclasspath来改变他们
Bootstrap Classloader加载下面这些东西:
/lib/rt.jar
/lib/i18n.jar
/lib/sunrsasign.jar
/lib/jsse.jar
/lib/jce.jar
/lib/charsets.jar
/classes
sun.misc.Launcher.getBootstrapClassPath().getURLs(), 通过这个语句可以得到相关的boot jar
Extension Classloader默认加载为“\lib\ext”,但可以通过-Djava.ext.dirs来修改
注:ExtClassLoader是加载目录。加载/lib/ext中的jar文件或者子目录classes中的class文件
AppClassLoader 是加载应用classpath的东西
他们三者的关系是 AppClassLoader.getParent() == Extension Classloader,Extension Classloader.getParent() == Bootstrap Classloader
jdk 本身的classloader加载类顺序是,先让Parent classloader来load类,如果找不到,然后再自己找。
ClassLoader代码片断
protected synchronized Class<?> loadClass(String name, boolean resolve)
throws ClassNotFoundException
{
// First, check if the class has already been loaded
Class c = findLoadedClass(name);
if (c == null) {
try {
if (parent != null) {
c = parent.loadClass(name, false);
} else {
c = findBootstrapClass0(name);
}
} catch (ClassNotFoundException e) {
// If still not found, then invoke findClass in order
// to find the class.
c = findClass(name);
}
}
if (resolve) {
resolveClass(c);
}
return c;
}
resolveClass():主要是检查文件是不是存在,比如已经形成了这个class对象,但又删除了这个class文件.
loadclass():定义load class顺序,但我们可以override,AntClassLoader就这样做
findclass():classloader子类可以orverride这个类
some useful API
/*得到系统的classloader,也就是 appclassloader*/ ClassLoader.getSystemClassLoader(); /*得到ext的classloader */ ClassLoader appCL = ClassLoader.getSystemClassLoader(); if (appCL != null) parent = appCL.getParent(); /*得到当前的classloader */ this.getClass().getClassLoader();
classloader 关系
所有classloader都可以使用 Bootstrap Classloader里的class,(rt.jar等),
举个例子,任何一个class都是object子类,所以object 类必须被load.
不同的classloader去load同一个class,会产生 java.lang.ClassCastException 错误
发表评论
-
互联网相关 WEB Framework
2011-04-23 11:51 915由于很多原因,一般做互联网的,如果不考虑时间和资源 ... -
序列化相关
2011-04-18 12:13 816序列化 作用: 很显然就是,主要让对象可以在多个jvm ... -
互联网相关 request参数
2011-04-09 12:30 1200通常互联网请求包括两种类型 get,post,他们请求所带参数 ... -
互联网相关 URL编码
2011-04-09 10:53 792互联网 URL 按照标准,URL中只能出现US-ASCII字 ... -
Velocity 的好处
2011-04-07 15:12 1437真正意义的mvc 跟jsp相比,它算真正意义的mvc,因 ... -
Spring scheam中的p 属性
2011-03-29 12:04 919http\://www.springframework.org ... -
数据结构 相关知识
2011-03-29 11:40 729Stack last-in-first-out ,jdk ... -
java.lang.reflect.Type
2011-03-28 18:12 1434java.lang.reflect.Type: 什么是jav ... -
Thread 相关问题
2011-03-28 16:16 772Double-checked locking h ... -
互联网 相关安全问题
2011-03-25 17:58 868下面是一些互联网应用中可能遇到的一些安全问题 ... -
request.getRemoteAddr方法为null
2011-03-02 16:01 5471在单独servlet container 里,request ... -
equinox一个web应用的例子
2010-12-03 13:08 850这是我2008写的一个使用equinox的web的简单例子,个 ... -
JMX相关
2010-11-17 15:57 893建立一个MBeanServer 有两种类型 建立普通的 ... -
定制sql语句的方法
2010-11-16 10:17 974hibernate 定制sql语句的方法: sql ... -
关于hibernate batchsize一些分析
2010-09-26 10:31 1988关于hibernate batchsize一些分析: ... -
mysql 乱码问题
2010-08-10 12:27 604Mysql乱码问题: 主要是配置你的connection参数 ... -
Thread 分析
2010-07-22 11:54 777interrupt() 这个方法,一般情况把 ... -
Svn keywords
2010-05-27 20:22 1033Svn现在已经有点out了,p2p的技术现在是流行,连Apac ... -
jboss 代码分析
2010-04-30 15:25 895Jboss是一个j2ee服务器,使用它自己的ioc,也就是m ... -
annotation 的理解
2010-04-21 11:12 818Annotation: 表现形式,就是code中 @*** ...
相关推荐
理解并能灵活运用这些知识对于开发和调试Java应用程序,特别是部署在容器如WebLogic上的应用,是至关重要的。在编写自己的ClassLoader时,需要考虑如何正确实现加载逻辑,以及如何处理类加载的并发问题,确保应用的...
本文将深入浅出地探讨JVM ClassLoader的工作原理和相关知识点。 首先,ClassLoader可以分为三种基本类型:Bootstrap ClassLoader、Extension ClassLoader和Application ClassLoader。Bootstrap ClassLoader是JVM...
`CH_05.package与import机制.pdf`可能讲解了与ClassLoader相关的包和导入机制,因为它们与类的组织和加载密切相关。 `CH_03.Java与MS Office.pdf`、`CH_04.用Visual Studio.net来操控Java虚拟机.pdf`、`CH_06.Ant....
本文将深入探讨“使用classloader动态加载Class”的相关知识点,同时参考了博客链接:https://ldbjakyo.iteye.com/blog/1046984。 首先,理解ClassLoader的工作原理至关重要。Java中的类加载过程分为三个主要阶段:...
Java中的类加载器(ClassLoader)是Java虚拟机(JVM)的一个重要组成部分,它负责将类的.class文件从文件系统或者网络中加载到内存中,并转换为对应的Class对象。类加载器的工作流程主要包括加载、验证、准备、解析...
在Java编程语言中,`ClassLoader`是一个至关重要的组件,它负责加载类到JVM(Java虚拟机)中。本文将深入探讨`ClassLoader`的工作原理、...在实际开发中,理解并运用这些知识点将有助于构建更健壮、更安全的软件系统。
在Java编程语言中,ClassLoader是核心组件之一,它负责加载类到JVM(Java虚拟机)中。...通过学习这些知识点,开发者可以更好地优化代码、设计更健壮的系统,并解决与类加载和初始化相关的复杂问题。
知识点总结: * Java 类加载机制是 Java 中一个非常重要的机制,它负责加载 Class 文件到 JVM,以供程序使用。 * ClassLoader 是 Java 中的一个抽象类,它的主要作用是加载 Class 文件到 JVM 中。 * ClassLoader ...
### Java ClassLoader 知识点解析 #### 一、引言 在《classloader教程 --- from IBM》这篇教程中,作者Greg Travis通过一系列详细的讲解帮助读者理解Java中的类加载器(ClassLoader)。作为Java运行时系统的一个核心...
### Java ClassLoader理解详解 #### 一、引言 在商业流行的编程语言中,Java以其独特的运行机制脱颖而出:它在Java虚拟机(JVM)上运行。...希望这篇教程能为你提供足够的背景知识,以便在实践中应用这些技术。
以下是ClassLoader的相关知识点: 1. 类加载机制: Java的类加载过程分为加载、验证、准备、解析和初始化五个阶段。ClassLoader主要涉及加载阶段,它根据类名查找并加载对应的.class文件。 2. 类加载器层次结构:...
本文将深入探讨一个简单的`ClassLoader`实现,以及与之相关的知识点。 首先,我们来看标题:“一个简单的ClassLoader”。这里的“简单”通常意味着这个自定义`ClassLoader`只实现了基本的功能,如加载特定位置的...
### Java自定义类加载器(Class Loader)详解 #### 一、引言 在Java语言中,类加载...总之,理解和掌握Java类加载器的相关知识对于提高程序设计能力具有重要意义。希望本文能帮助读者更好地理解和应用Java类加载器。
下面将详细探讨这些知识点。 1. **双亲委派模型**:这是Java类加载器的基础模型,它规定了类加载的顺序。当一个类加载器收到加载类的请求时,它会首先委托父类加载器去尝试加载,只有当父类加载器无法加载时,当前...
希望这些知识能够对你有所帮助。 --- 通过上述内容,我们可以看到Java类加载器的重要性及其在Java开发中的作用。掌握了类加载器的原理和技术,开发者可以更加灵活地管理Java应用程序中的类加载过程,这对于优化...
对于标题“Java SE: ClassLoader in depth”和描述中提到的“源码”、“工具”,实际上在给出的内容部分并没有任何与Java ClassLoader深入相关的技术信息。所提供的内容实际上是一份公司入职报到的指南,与Java编程...
Java ClassLoader是Java虚拟机(JVM)的重要组成部分,它负责加载类到JVM中运行。理解ClassLoader的工作原理对于深入学习Java以及进行JVM优化、插件开发等高级技术至关重要。...因此,它是Java程序员必备的知识点之一。
通过阅读和分析`icpc2013.pdf`这个文件,虽然其内容与Tomcat的ClassLoader无关,但通常这类会议论文或报告可能会涉及软件工程、编程语言或系统架构等相关领域,这些知识也能辅助我们更好地理解和改进应用程序,包括...
知识点二:ClassLoader类的loadClass方法 ClassLoader类的loadClass方法是实现双亲委派模型的核心方法,该方法的主要逻辑是:首先检查类是否已被加载,如果没有就判断是否已被父加载器加载,如果还没有再调用自己的...
在Java编程语言中,ClassLoader是核心...总的来说,这些知识点涵盖了Java中的类加载机制、接口与抽象类的区别、主方法的特性、变量默认值以及类的访问控制,这些都是Java程序员在面试和实际开发中必须掌握的基础知识。