JVM-类加载子系统
类的生命周期

1.加载
将.class二进制字节流流从磁盘读到内存中(通过文件的全限定名读取)
2.连接
2.1验证:验证字节码文件的正确性
2.2准备:给类的静态变量分配内存,并赋予默认值(比如 int i = 0)
2.3解析:类装载器装入类所引用的其它类
3.初始化
为静态变量赋予正确的初始值,此阶段才是程序员编写的程序变量赋予真正的初始值,执行静态代码块
4.使用
通过执行引擎执行相应类的方法
5.卸载
生命周期结束有以下几种情况:1、程序正常执行结束 2、执行中出现异常 3、操作系统出现异常 4、通过执行 system.exit()
类加载器的种类(主要)
启动类加载器(Bootstrap ClassLoader):负责加载JRE核心类库,像JRE中的rt.jar等(C/C++);
扩展类加载器(Extension ClassLoader):负责加载JRE扩展目录ext中的jar包;
系统类加载器(Application ClassLoader):负责加载ClassPath路径下的类包;
类加载机制
1.全盘负责委托机制(比较古老)
当一个ClassLoader加载一个类时,需要按需加载其它类的时候,那该类也由这个ClassLoader载入,比如一个A类加载是由Application ClassLoader载入,这个A类引用了B类,这时B类也将由Application ClassLoader载入。
2.双亲委派机制(parent译义为双亲)

总结:
1.安全机制:防止用户自定义类篡改核心类库,比如自定义String.class类不会被加载,如果这个String类被加载了那相当于Java的String类被替代了。这是不允许的。
2.避免类的重复加载:当父类ClassLoader加载了一个类的时候,这个类不需要被其它ClassLoader再次加载。
JVM-类加载子系统的更多相关文章
- 一夜搞懂 | JVM 类加载机制
前言 本文已经收录到我的Github个人博客,欢迎大佬们光临寒舍: 我的GIthub博客 学习导图 一.为什么要学习类加载机制? 今天想跟大家唠嗑唠嗑Java的类加载机制,这是Java的一个很重要的创 ...
- JVM解毒——类加载子系统
带着问题,尤其是面试问题的学习才是最高效的.加油,奥利给! 点赞+收藏 就学会系列,文章收录在 GitHub JavaEgg ,N线互联网开发必备技能兵器谱 直击面试 看你简历写得熟悉JVM,那你说说 ...
- 【JVM之内存与垃圾回收篇】类加载子系统
类加载子系统 概述 完整图如下: 如果自己想手写一个 Java 虚拟机的话,主要考虑哪些结构呢? 类加载器 执行引擎 类加载器子系统作用 类加载器子系统负责从文件系统或者网络中加载 Class 文件, ...
- JVM笔记 -- 来,教你类加载子系统
类加载子系统 类文件首先需要经过类加载子系统,进行加载,进类信息等加载到运行时数据区,生成Klass的实例. 在类加载子系统中有以下3个阶段操作(广义上的加载): 加载阶段 Bootstrap Cla ...
- JVM上篇:类加载子系统
JVM类加载 目录 JVM类加载 1.内存结构概述 2.类加载子系统概述 3.类的加载过程 2.1加载 2.2Linking 2.2.1验证(Verify) 2.2.2准备(Prepare) 2.2. ...
- JVM — 类加载机制
1. 引言 java 类被虚拟机编译之后成为一个 Class 的字节码文件,该字节码文件中包含各种描述信息,最终都需要加载到虚拟机中之后才能运行和使用.那么虚拟机是如何加载这些 Class 文件?Cl ...
- JVM_02 类加载子系统
JVM细节版架构图 本文针对Class Loader SubSystem这一块展开讲解类加载子系统的工作流程 类加载子系统作用 1.类加载子系统负责从文件系统或者网络中加载class文件,class文 ...
- 虚拟机系列 | JVM类加载机制
本文源码:GitHub·点这里 || GitEE·点这里 一.类加载简介 类的加载机制是指把编译后的.class类文件的二进制数据读取到内存中,并为之创建一个java.lang.Class对象,用来封 ...
- Java jvm 类加载 反射
Java 底层 jvm,类加载,反射 Java语言是跨平台语言,一段java代码,经过编译成class文件后,能够在不同系统的服务器上运行:因为java语言中有虚拟机jvm,才有了跨平台,java为了 ...
- JVM2 类加载子系统
目录 类加载子系统 类加载器子系统 类加载器ClassLoader角色 类加载的过程 案例 加载Loading 连接Linking 初始化Intialization clinit() 类的加载器 虚拟 ...
随机推荐
- Array 和 ArrayList 有何区别?(未完成)
Array 和 ArrayList 有何区别?(未完成)
- Codeforces Round #590 (Div. 3) 万恶的自己WAC
C题:一道简单的C题卡了半天,我太菜了 题意:给你一个n*2的矩阵,每个位置有一个数字,对应一种管道,要求通道可不可以从左上通到右下 由提议可以看出,1,2对应的是直管道,3,4,5,6对应弯管道,只 ...
- Window脚本学习笔记之BAT文件处理
BAT文件处理 列出盘中特定文件名的文件: @echo offdir C:\*.jpg /b/s>.\CDatejpg.txt dir C:\*.png /b/s>.\CDatepng.t ...
- 对于vector中高效删除中间元素的技巧
众所周知,vector是连续存储空间,只提供高效的尾部删除方法pop_back() ,在中间删除的效率很低,那么如果大家想快速删除中间元素该如何实现? 话不多说,看代码: //移除vector元素,最 ...
- windows系统上 安装 Redis
下载地址:https://github.com/microsoftarchive/redis/releases 下载完成后,把这个给解压出来 然后,使用 cmd 命令 进入 解压的redis目录 输入 ...
- 分布式可扩展存储系统 BaikalDB
BaikalDB是一个分布式可扩展的存储系统,支持PB级结构化数据的随机实时读写. 提供MySQL接口,支持常用的SELECT,UPDATE,INSERT,DELETE语法.提供各种WHERE过滤.G ...
- javascript---操作节点
快捷键:jiedian(节点) 节点增删改appendChild() insertBefore() replaceNode() <!DOCTYPE html><html lang=& ...
- LNOI2018 劈配
主要思路为连反向边. 对于本题,贪心策略,依次决定每个人的最优解 但因为每人达到的最优解可能有多种方式,如果每个都尝试就会超时,所以只能先采取其中一种 并将这个方案连反向边,其它方案连正向边 这样对于 ...
- P4149 [IOI2011]Race 点分治
思路: 点分治 提交:5次 题解: 刚开始用排序+双指针写的,但是调了一晚上,总是有两个点过不了,第二天发现原因是排序时的\(cmp\)函数写错了:如果对于路径长度相同的,我们从小往大按边数排序,当双 ...
- [Luogu P1230]智力大冲浪
题目链接 这道题,贪就对了. 先按照价值排序,从大到小.当前考虑的的就先放到尽可能晚的时间点,为其他的创造机会,如果这一个的所有可用时间段都被占据,就只能扣钱了. #include<fstrea ...