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() 类的加载器 虚拟 ...
随机推荐
- [Python] For 嵌套循环打印图形 nested loop-练习题答案
前一篇:[Python] For 嵌套循环打印图形 nested loop-练习题 [python的for循环嵌套打印如下图形] 图形一: 输出结果: ******* ******* ******* ...
- python c++ 混合编程中python调用c++string返回类型的函数,python中返回为数字的解决办法
本随笔解决 Python使用ctypes 调用c++dll 字符串返回类型函数,在python中显示为数字:原文解决方案见so: https://stackoverflow.com/questions ...
- 【转】go里面字符串转成 字节slice, 字节slice转成字符串
原文: https://yourbasic.org/golang/convert-string-to-byte-slice/#convert-string-to-bytes ------------- ...
- rabbitmq 持久化 事务 发送确认模式
部分内容来自:http://blog.csdn.net/hzw19920329/article/details/54315940 http://blog.csdn.net/hzw19920329/ar ...
- C语言博客I作业04
问题 回答 这个作业属于那个课程 C语言程序设计II 这个作业要求在哪里 作业要求 我在这个课程的目标是 掌握使用for循环语句实现指定次数的循环程序设计. 这个作业在那个具体方面帮助我实现目标 通过 ...
- Java 实现简单的SQL动态组装工具类
第一版 package com.zh.oukele.util; import java.util.HashMap; import java.util.Iterator; import java.uti ...
- EMF保存CDATA
/** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated NOT */ public String ...
- 在stm32开发可以调用c标准库的排序和查找 qsort bsearch
在嵌入式开发中,可以使用c标准库自带的库函数,而不用自己去早轮子,qsort 和bsearch就是其中的两个比较好用的 二分法查找,前提是已经排序好的数据.下面的代码, 如果数据为排序,则要进行排序后 ...
- 2019HDU多校第三场F Fansblog——威尔逊定理&&素数密度
题意 给定一个整数 $P$($10^9 \leq p\leq 1^{14}$),设其前一个质数为 $Q$,求 $Q! \ \% P$. 分析 暴力...说不定好的板子能过. 根据威尔逊定理,如果 $ ...
- HDU 3824/ BZOJ 3963 [WF2011]MachineWorks (斜率优化DP+CDQ分治维护凸包)
题面 BZOJ传送门(中文题面但是权限题) HDU传送门(英文题面) 分析 定义f[i]f[i]f[i]表示在iii时间(离散化之后)卖出手上的机器的最大收益.转移方程式比较好写f[i]=max{f[ ...