导图社区 JVM的类加载阶段
JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现;JVM的类加载阶段包括加载、验证、准备、解析、初始化、使用、卸载这几个过程。
才女笔下的百味人生。李清照以清丽婉约的词风,写尽人间悲欢。她的词作既有"倚门回首,却把青梅嗅"的少女娇憨,也有"帘卷西风,人比黄花瘦"的深闺孤寂。从"误入藕花深处"的闲适到"醒时空对烛花红"的忧思,无不渗透着时节之感与命运波折。这位宋代女词人将闺思、乡愁、国恨揉进词句,用夜雨、残酒、西风等意象,刻画出坎坷人生中的细腻情思,留下穿越时空的生命注脚。
Shell是连接用户与Linux的高效桥梁!作为命令行解释器,Shell无需编译即可执行批处理或交互式命令,支持变量操作和多种运行方式。它既是程序设计语言,也是命令工具,通过echo/printf格式化输出,用export/unset管理变量用户可编写脚本批量执行命令。拥有的逐条交互操作特性包括无数据类型、花括号变量引用及严格命名规则。内置C语言编写的核心,支持大数据挖掘与自动化任务,是Linux生态的基石。
想高效攻克英语?这份学习资源宝典助你从基础到精通! 内容涵盖俞敏洪系列教材,聚焦写作、翻译、语法、词汇、阅读、词典、字帖、词根词缀等内容,提供趣味性的读本,适配全阶段:小学、考研、雅思、托福、专、专八无所不包,可以形成对新东方各种英语学习教材的整体印象,零基础也能系统进阶!
社区模板帮助中心,点此进入>>
互联网9大思维
组织架构-单商户商城webAPP 思维导图。
域控上线
python思维导图
css
CSS
马克思主义原理
计算机操作系统思维导图
计算机组成原理
IMX6UL(A7)
JVM的类加载阶段
加载
JVM读取Class文件
根据Class文件描述创建java.lang.Class对象的过程
类加载过程主要包含将Class文件读取到运行时区域的方法区内
在堆中创建java.lang.Class对象
并封装类在方法区的数据结构的过程
在读取Class文件时既可以通过文件的形式读取
也可以通过
jar包
war包
读取
还可以通过代理自动生成Class或其他方式读取
验证
只有通过验证的Class文件才能被JVM加载
准备
在方法区为类变量分配内存空间并设置类中变量的初始值
初始值是不同数据类型的默认值
解析
JVM会将常量池中的符号引用替换为直接引用
连接
初始化
主要通过类构造器的<client>方法为类进行初始化
<client方法是在编译阶段由编译器自动收集类中静态语句块和变量的赋值操作组成的>
不会触发该常量类的初始化
在子类引用父类的静态字段时,只会触发父类的初始化
定义对象数组
使用类名获取Class对象时不会触发
在使用Class.forName加载指定的类时,可以通过initialize参数设置是否需要对类进行初始化
在使用ClassLoader默认的loadClass方法加载类时不会触发该类的初始化
使用
类加载器
启动类加载器
负责加载Java_HOME/lib目录中的类库
或通过Xbootclasspath参数指定路径中被虚拟机认可的类库
扩展类加载器
负责加载Java_HOME/lib/ext目录下的类库
或通过java.ext.dirs系统变量加载指定路径中的类库
应用程序类加载器
负责加载用户路径上的类库
双亲委派机制
一个类在收到类加载请求后不会尝试自己加载这个类
而是把该类加载请求向上委派给其父类去完成
其父类在接收到该类加载请求后又会将其委派给自己的父类
核心是保障类的唯一性和安全性
OSGI
Java动态化模块化系统的一系列规范
目的
为实现Java程序的模块化编程提供基础条件
基于OSGI的程序可以实现模块级的热插拔功能
在程序升级更新时
可以只针对需要更新的程序进行停用和重新安装
极大地提高了系统升级的安全性和便捷性
提供了一种面向服务的结构
为组件提供了动态发现其他组件的功能
无论是加入组件还是卸载组件
都可以被系统的其他组件感知
以便各个组件之间能更好地协调工作
卸载