Java是程序设计语言
java也是一个shell命令,我们启动Java程序用 java --setting xxxx.java 这个命令启动JVM,setting是启动这个JVM给的各种参数,比如内存,垃圾搜集器等等等等,当然你不设置,sun给你了弄了些默认值,这些默认值很多会智能的根据你的机器来设置,有些你就要根据自己的需求自己琢磨了。
本文记录JVM的一个重要部件:类加载器
当启动JVM的时候,可以使用三个类加载器:引导(bootstrap)类加载器、扩展(extensions)类加载器、应用程序(application)类加载器。
1.引导类加载器仅仅负责加载核心的Java库,e.g. java.*
, javax.*
, etc。这个类加载器,是JVM核心部分,是用native代码写成的。
2. 扩展类加载器负责加载扩展路径下的代码,一般位于<JAVA_HOME>/jre/lib/ext
或者通过java.ext.dirs 这个系统属性指定的路径下的代码。这个类加载器是由sun.misc.Launcher$ExtClassLoader 实现的。
3.应用程序类加载器负责加载java.class.path(映射系统参数 CLASSPATH的值) 路径下面的代码,这个类加载器是由
sun.misc.Launcher$AppClassLoader 实现的,如果你接触过JavaEE,你会发现tomcat会从什么lib之类的目录加载类,那是因为tomcat搞了自己的类加载器,可看下图:
当处理类加载器时,父委托模式是一个需要理解的关键概念。它规定:类加载器在加载自己的类之前,可以委托先加载父类。父类加载器可以是客户化的类加载器或者引导类加载器。但是有一点很重要,类加载器只能委托自己的父类加载器,而不能是子类加载器(只能向上不能向下)。
如果应用程序类加载器需要加载一个类,它首先委托扩展类加载器,扩展类加载器再委托引导类加载器。如果父类加载器不能加载类,子类加载器就回在自己的库中查找这个类。基于这个特性,类加载器只负责它的祖先无法加载的类。
- 大小: 48.3 KB
- 大小: 45 KB
分享到:
相关推荐
类加载器是 Java 语言的一个创新,也是 Java 语言流行的重要原因之一。它使得 Java 类可以被动态加载到 Java 虚拟机中并执行。类加载器从 JDK 1.0 就出现了,最初是为了满足 Java Applet 的需要而开发出来的。Java ...
看完一个Java加载原理教程后,写了这个自己的类加载器,作个笔记,以便以且使用
自定义类加载器实现自定义加载。自定义类加载器实现自定义加载
DevLoader.zip tomcat 类加载器
Java类加载器可以直接从Maven存储库加载并运行类,能在运行时解决依赖关系
当JVM(Java虚拟机)启动时,会形成由三个类加载器组成的初始类加载器层次结构,理解类加载器:J2EE 环境下的 log4j.files
简单的自定义类加载器问候世界hello word,基于磁盘的ClassLoader
类装载器学习一、类加载器的基本概念 类装载器学习一、类加载器的基本概念 类装载器学习一、类加载器的基本概念
java 类加密 使用类加载器解密加载类 反射执行main
类加载器
ClassLoader 三种类加载方式 Boostrap Extenxsion 以及Application ClassLoad分别适用的场景
JDK(Java Development Kit) 是 Java 语言的软件开发工具包(SDK)。 SE(J2SE),standard edition,标准版,是我们通常用的一个版本,从JDK 5.0开始,改名为Java SE。
java应用程序类加载器(ClassLoader for java Application),类似exe4j, 方便启动java程序, 配置灵活,支持多平台选择性配置
(父子关系一般不会以继承的关系实现,而是以组合关系来复用父加载器的代码)工作过程如果一个类加载器收到了类加载的请求,它首先不会自己去尝试加载这个类,而是把这个请
什么是类加载器和什么是双亲委派机制
ClassLoader的API使用和自定义
类加载器是Java最强大的特征之一。但是开发者常常忘记类加载组件。类加载器是在运行时负责寻找和加载类文件的类。Java允许使用不同的类加载器,甚至自定义的类加载器。类加载器从源文件(通常是.class 或 .jar文件)...
3-7Tomcat中自定义类加载器的使用与源码实现(1).mp4
java类加载器学习三、类加载器的委托模式