2 aizbgo aizbgo 于 2016.05.08 18:24 提问

java虚拟机如何查找已加载的类?java虚拟机在代码中为指定类加载器时如何选择类加载器?

tomcat不同webapp相互隔离是怎么做到的?
通过不同webapp使用不同的类加载器加载做到的?
怎么指定某个webapp使用哪个类加载器?不是每个类都用classLoader.loadClass()吧。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
《Java虚拟机原理图解》5. JVM类加载器机制与类加载过程
一、Java语言的跨平台性的含义 Java语言之所以说它是跨平台的、可以在当前绝大部分的操作系统平台下运行,是因为Java语言的运行环境是在Java虚拟机中。 Java虚拟机消除了各个平台之间的差异,只要操作系统平台下安装了Java虚拟机,那么使用Java开发的东西都能在其上面运行。如下图所示:          Java虚拟机对各个平台而言,实质上是各个平台上的一个可
打破类加载的委托模式,指定类加载器的小技巧
      目前java中的类加载是通过委托机制来完成的,也就是说一个类加载器加载一个类的时候会先委托它的父级类装载器去加载,如果他的父亲还有父亲就在委托他父亲的父亲去加载,就这样一直追溯到根类加载器BootStrap,如果BootStrap加载不了目标类,在由BootStrap的下一级去加载,这样一级一级的回退,当回退到最初的类装载器时,如果它自己也不能完成类装载,会抛ClassNotFou
Java虚拟机----自定义类加载器:实现对字节码的加密解密
一、概述         上一篇《Java虚拟机----类的加载过程》分析了类加载的全过程,本文将以一个示例实现自定义类加载器。         Java 源文件的编译结果缺省为字节码,也就是后缀名为“.class”的文件,那么在很多情况下,我们并不希望看到编译后的字节码文件被其他人使用一些反编译工具将程序中的字节码文件反编译为源文件,以透露了一些非开源的数据信息,尤其是随着目前网络的日益普及
【深入Java虚拟机】之四:类加载机制
类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括:加载、验证、准备、解析、初始化、使用和卸载七个阶段。 其中类加载的过程包括了加载、验证、准备、解析、初始化五个阶段。在这五个阶段中,加载、验证、准备和初始化这四个阶段发生的顺序是确定的,而解析阶段则不一定,它在某些情况下可以在初始化阶段之后开始,这是为了支持Java语言的运行时绑定(也成为动态绑定或晚期绑定)。另外注意这里的几个阶段是按顺序开始,而不是按顺序进行或完成,因为这些阶段通常都是互相交叉地混合进行的,通常在一个阶段执行
深入类加载器二----主动引用和被动引用
深入类加载器(二)--主动引用和被动引用          JVM类加载的全过程值之初始化的时机,类的主动引用和被动引用,静态初始化块执行顺序问题。    我们已经知道了类加载的初始化阶段就是类构造器的初始化。所谓的类构造器就是 将静态变量的初始化动作和静态块中的所有的内容合并起来。在静态变量和静态块的初始化过程    在多线程的环境中肯定是线程安全的。肯定会有同步和等待。并且如果发现父类
深入理解Java虚拟机--类加载器
通过一个类的全限定名来获取描述此类的二进制流,执行这个动作的代码模块成为“类加载器”。        两个类只有在同一个类加载器加载的前提下才有意义,否则即使两个类原子相同的Class文件,只要加载它们的加载器不同,那这两个类也是不相等的。这里的相等,包括equals,isAssignableFrom(),isInstance() instanceof等情况。 双亲委派模型  
JVM(Java虚拟机)启动时,会形成由三个类加载器组成的初始类加载器层次结构:
当JVM(Java虚拟机)启动时,会形成由三个类加载器组成的初始类加载器层次结构:bootstrap classloaderextension classloadersystem classloaderbootstrap classloader - 引导(也称为原始)类加载器,它负责加载Java的核心类。在Sun的JVM中,在执行java的命令中使用-Xbootclasspat
Java动态类加载器(加载外部jar包类 读取资源文件)
Code: package xx.xx.xx import java.io.IOException; import java.io.InputStream; import java.util.jar.JarEntry; import java.util.jar.JarFile; import org.slf4j.Logger; import org.slf4j.Log
深入理解java虚拟机(三)(一个类加载器只初始化一次类对象,不同类加载器可以对同一类对象进行初始化)
package com.ygl; class Final{ public static final int x=6/3;//此处x在编译时能计算出值,是编译时的常量,则System.out.println(Final.x);直接输出值,不再执行下面static static{ System.out.println("Final "); } } public class Test2 {
Java实现类加载器,加载指定包名下的所有类
package com.newframework.utils; import java.io.File; import java.io.FileFilter; import java.net.URL; import java.util.Enumeration; import java.util.HashSet; import java.util.Set; import