什么是类加载器,类加载器如何分类
一、类加载器
1.什么是类加载器
类加载器:负责将.class文件(存储的物理文件)加载到内存中
2.类加载时机:
① 创建类的实例(对象)
② 调用类的实例方法
③ 访问类或者接口的类变量,或者为该类变量赋值
④ 使用反射方法来强制创建某个类或接口对应的java.lang.Class对象
⑤ 初始化某个类的子类
⑥ 直接使用java.exe命令来运行某个主类
3.类加载的过程
加载:
① 通过一个类的全限定名获取定义此类的二进制流,即通过包名+类名,获取这个类,准备用流进行传输
② 将这个字节流所代表的静态存储结构转化为运行时数据结构,即将这个类加载到内存中
③ 在内存中生成一个代表这个类的java.lang.Class对象,任何类被使用时,系统都会为创建一个java.lang.Class对象,即加载完毕创建一个class对象
验证:
链接阶段的第一步,这一阶段为了确保Class文件字节流中包含的信息符合当前虚拟机的要求,并且不会危害虚拟机的自身安全,即文件中的信息是否符合虚拟机规范,有没有安全隐患
准备:
负责为类的类变量(被static修饰的变量)分配内存,并且设置默认初始化值,即初始化静态变量
解析:
将类的二进制数据流中的符号引用替换为直接引用,即本类中如果用到了其他的类,此时就需要找到对应的类
初始化:
根据程序员通过程序指定的主观计划去初始化类变量和其他资源,即静态变量赋值以及初始化其他资源
statac String school=“中山大学”
类加载过程小结:
当一个类被使用的时候,才会被加载到内存
类加载的过程:加载、验证、准备、解析、初始化
二、类加载分类
jdk9 以后,类加载器分类:
启动类加载器(Bootstrap ClassLoader):虚拟机内置的类加载器
平台类加载器(Platform ClassLoader):负责加载JDK一些特殊的模块
系统类加载器(System ClassLoader):负责加载用户类路径上的所指定的类库
jdk8 类加载器分类:
什么是类加载器,类加载器如何分类相关推荐
- 虚拟机类加载机制---类加载器
类加载器 类加载阶段中"通过一个类的全限定名来获取描述此类的二进制字节流"这个动作放到java虚拟机外部去实现.实现这个动作的代码模块称为"类加载器". 类 ...
- 深入JVM系列(三)之类加载、类加载器、双亲委派机制与常见问题
转载自 深入JVM系列(三)之类加载.类加载器.双亲委派机制与常见问题 一.概述 定义:虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验.转换解析和初始化,最终形成可以被虚拟机直接使用 ...
- 深入类加载器-类加载器作用,类缓存、类加载器的层次结构、ClassLoader类介绍、代理模式之双亲委派机制
1.类加载器的作用 类加载器的作用是将class字节码文件加载到内存中,并将这些静态数据转化为方法区中的运行时数据结构,同时在堆中生成代表这个类的java.lang.Class对象,作为访问方法区中数 ...
- 本科生尝试安卓APP开发:手机调音器节拍器(音乐学习者使用)
目录 写在前面 本项目的灵感来源 作品完成度 项目介绍 APP的名字:沐尘调音器 APP功能介绍 调音器 节拍器 实际测试 调音器测试 节拍器测试 项目内容 开发环境 APP功能原理 1.调音器-编程 ...
- 【Linux 内核】CFS 调度器 ④ ( 调度子系统组件模块 | 主调度器、周期性调度器 | 调度器类 )
文章目录 一.调度子系统组件模块 二.主调度器.周期性调度器 三.调度器类 一.调度子系统组件模块 调度器 需要对 被调度的进程 进行 排序 和 调度管理 , 进程管理过程需要 调度器 的 组件模块 ...
- spring mvc拆分_Spring集成–强大的拆分器聚合器
spring mvc拆分 健壮是什么意思? 在本文的上下文中,健壮性是指在不立即返回给调用者的情况下管理流中的异常条件的能力. 在某些处理方案中, n个 m个回答足以做出结论. 通常具有这些趋势的示例 ...
- Spring集成–强大的拆分器聚合器
坚固是什么意思? 在本文的上下文中,健壮性是指在不立即返回到调用者的情况下管理流中的异常条件的能力. 在某些处理方案中, n个 m个回答足以做出结论. 通常具有这些趋势的示例处理场景是: 财务,保险和 ...
- python三大器_Python - 三大器 迭代器,生层器,装饰器
Python - 三大器 迭代器,生层器,装饰器 在介绍三大器之前先来了解一下容器和可迭代对象... 一. 容器 容器是一种把多个元素组织在一起的数据结构,容器中的元素可以逐个地迭代获取,可以用in, ...
- 51 Python - 装饰器 参数化装饰器——装饰器更通用
05参数化装饰器--装饰器更通用 参数化装饰器如何理解,简单理解就是让装饰器可以通用.场景举例,现在有个需求要改某一段文字,既要加<P>标签,又要加<B>,还有加<Div ...
- 与众不同 windows phone (14) - Media(媒体)之音频播放器, 视频播放器, 与 Windows Phone 的音乐和视频中心集成...
原文:与众不同 windows phone (14) - Media(媒体)之音频播放器, 视频播放器, 与 Windows Phone 的音乐和视频中心集成 [索引页] [源码下载] 与众不同 wi ...
最新文章
- python花数_Python数据分析实战,尾鸢花数据集数据分析
- Ubuntu16.04在线安装MongoDB详细教程
- SparkWeb 编译
- Linux压缩解压缩命令
- java命令详解 java -D
- 多重纹理和纹理组合器
- Oracle GoldenGate经典架构
- sql找出2000-3000年中的闰年。_跟飞哥学编程:SQL入门-4-查询和条件
- vijos p1059——积木城堡
- python中合并字符串的库函数是_《Python Cookbook(第2版)中文版》——1.6 合并字符串...
- 南阳oj入门题-谁是最好的coder
- java 设计连连看_软件设计之基于Java的连连看小游戏(一)——开题及游戏首页的制作...
- 开发一款系统软件大概需要多少钱呢
- 2021年茶艺师(初级)考试题及茶艺师(初级)新版试题
- Given no hashes to check 131 links for project 'pip': discarding no candidates
- 免费在线思维导图网站,这么好用一定要收藏
- OSChina 周二乱弹 —— 我和高中女同学表白了
- 博途plc连接电脑_西门子博途怎么上载plc程序
- RDM1 软件需求与开发
- 原生js中如何添加dom元素
热门文章
- 支持MyIE/Green Browser浏览器的Google PR插件
- Nero_BurningROM_11.0.23.100序列号
- 3D中的方位和角位移(1)
- Git从本地向TFS push项目
- Java+mysql 志愿者管理系统
- 永磁同步电机控制系统——模型预测控制(MPC)
- 测试用例设计方法---流程图法
- 如何进行项目总结和复盘?
- Flutter glUtilsParamSize: unknow param 0x00008741 错误
- 「Python条件结构」判断是否能同时被3、5、7整除