深入理解Java中类加载的流程和机制
来源:互联网 发布:淘宝优惠券怎么用不了 编辑:程序博客网 时间:2024/06/04 18:10
首先让我们连接类加载器的种类和作用:
引导类加载器:(Bootstrap ClassLoader),使用c++编写的,将一些必须系统类(位于{JAVA_HOME/lib下的jar包})加入到内存的方法区中,由于该加载器是由c++实现的,java代码不能访问,但是我们可以查询某各类是否被引导类加载器加载过,如:java.lang.Object,java.lang.Class,java.lang.System 等等
拓展类加载器:(Extension ClassLoader),用于加载java的扩展类的(位于{JAVA_HOME/lib/ext/下的jar包}),用来提供出系统类之外的其他服务,它是java中访问的最高的类加载器,即超级父类加载 拓展类没有父类
应用类加载器:(Application ClassLoader):用于加载用户自己编写的类
用户自定义类加载器:(必须继承java.lang.ClassLoader)用户自己编写定义的类加载器
类加载器之间的关系:
执行一个程序的流程:
1.根据jvm内存配置,获取内存
2.通过引导类加载器,将必须要的系统类加载进JVM中的方法区中
3.创建jvm启动器实例Launcher(是单列模式,一个jvm只有一个启动器),获得类加载器ClassLoader
4.加载我们自己定义的类
5.jvm从自定义的类的main方法开始执行
6.程序执行完,jvm自动销毁
class的类加载流程
应用类加载器要加载某个类,先判断它是否已经加载,是--->返回Class<T>实例,如果没有--->委托拓展类加载器加载,如果加载--->返回Class<T>实例,不在加载范围,返回null,--->然后,去查询类是否被引导类加载器加载,是--->返回Class<T>实例,没有---->应用类加载器自己加载,加载成功---->返回Class<T>实例,没有---->返回ClassNotFoundException异常
加载图:
内存中的存储管理:
参考:http://m.blog.csdn.net/article/details?id=50529868
- 深入理解Java中类加载的流程和机制
- 深入理解java:类加载机制 和 反射机制
- 深入理解和探究Java类加载机制
- 深入理解java虚拟机【类加载机制】
- 深入理解Java类加载机制
- 【深入理解Java虚拟机】类加载机制
- 深入理解java类加载机制
- 深入理解类加载机制
- 深入理解类加载机制
- Android 深入理解 View 的绘制流程和机制
- java虚拟机类加载机制---《深入理解java虚拟机》读书笔记
- Java虚拟机类加载机制---深入理解Java虚拟机
- 深入理解Java虚拟机--Java虚拟机类加载机制
- java类加载机制--《深入理解java虚拟机》
- 深入理解Java虚拟机——JVM类加载机制(类加载过程和类加载器)
- 深入理解Java虚拟机(三)-----类文件结构和类加载机制
- 深入理解java虚拟机-4 虚拟机类加载机制
- 深入理解Java:类加载机制及反射
- git忽略文件.gitignore
- java基础提高篇--集合源码剖析--java集合框架
- 字节流与字符流的区别详解
- springboot整合dubbo
- iOS 图片擦除
- 深入理解Java中类加载的流程和机制
- Core Location定位
- android 性能分析之常用adb命令adb shell am start -W
- Swift
- [JavaWeb]jsp图片ajax异步上传,利用ajaxfileupload
- Java基础集合Map
- C语言变长数组data[0]【总结】
- 网络运维实现方案
- leetcode 110. Balanced Binary Tree DFS