面试必会系列 - 1.4 类加载机制
本文已收录至 github,完整图文:https://github.com/HanquanHq/MD-Notes
类加载机制
类加载机制,类加载的过程?
- class loading 加载:JVM 把描述类的数据从 Class 文件加载到内存中
- class linking 连接
- verification:校验装进来的 class 文件是否符合标准,比如
CA FE BA BE
- preparation:将 class 文件的静态变量赋默认值(不是初始值)
- resolution:把 class 文件常量池中用到的符号引用,转换为直接内存地址可以直接访问到的内容
- verification:校验装进来的 class 文件是否符合标准,比如
- class initializing 初始化:静态变量这时候才会赋初始值
- 申请对象内存
- 成员变量赋默认值
- 调用构造方法
- 成员变量按照顺序赋初始值
- 执行构造方法语句
- 最终形成可以被虚拟机直接使用的 Java 类型,这个过程称为虚拟机的类加载机制。
双亲委派机制(parent 翻译不准确,应为父类委派机制)
双亲委派机制是一个递归,不同的类加载器加载不同的 class。
Bootstrap ClassLoader 启动类加载器
C++实现
加载 <JAVA_HOME>/lib下的类,是 jdk 最核心的内容,例如 rt.jar, charset.jar
加载路径:sun.boot.class.path
Extension ClassLoader 扩展类加载器
Java 实现
加载扩展包中的类,在 jdk 安装目录 jre/lib/ext 下的 jar
加载路径:java.ext.dirs
Application ClassLoader 系统类加载器
我们写的代码默认就是由它来加载
加载 classpath 指定的内容
加载路径:java.class.path
User ClassLoader 用户自定义加载器
- 加载自己定义的加载器
类加载器的加载过程
- 子类先委托父类加载
- 父类加载器有自己的加载范围,范围内没有找到,则不加载,并返回给子类
- 子类在收到父类无法加载的时候,才会自己去加载
为什么要搞双亲委派?
主要为了安全。如果任何一个 class 都可以把它 load 到内存的话,那我就可以自定义一个 java.lang.string 类,交给自定义的 ClassLoader,把这个我自己的 string 类打包给客户,它被 load 进内存,然后客户把密码存储成 String 类型对象,我偷摸把密码发给自己,这样就不安全了。
面试必会系列 - 1.4 类加载机制相关推荐
- 面试必会系列 - 1.6 Java 垃圾回收机制
本文已收录至 Github(MD-Notes),若博客中有图片打不开,可以来我的 Github 仓库:https://github.com/HanquanHq/MD-Notes,涵盖了互联网大厂面试必 ...
- 面试必会系列 - 1.5 Java 锁机制
本文已收录至 github,完整图文:https://github.com/HanquanHq/MD-Notes 面试必会系列专栏:https://blog.csdn.net/sinat_424833 ...
- 面试必会系列 - 1.7 JVM 内存模型
本文已收录至 Github(MD-Notes),若博客中图片模糊或打不开,可以来我的 Github 仓库,包含了完整图文:https://github.com/HanquanHq/MD-Notes,涵 ...
- 面试必会系列 - 5.3 LVS负载均衡
本文已收录至 Github(MD-Notes),若博客中图片模糊或打不开,可以来我的 Github 仓库,包含了完整图文:https://github.com/HanquanHq/MD-Notes,涵 ...
- 面试必会系列 - 11.1 一文读懂Maven:Maven工程类型、项目结构、工程关系、常见命令等
本文已收录至 Github(MD-Notes),若博客中图片模糊或打不开,可以来我的 Github 仓库,包含了完整图文:https://github.com/HanquanHq/MD-Notes,涵 ...
- 面试必会系列 - 5.2 详解OSI模型与七层协议,网络TCP/IP基础,三次握手、四次挥手等
本文已收录至 Github(MD-Notes),若博客中图片模糊或打不开,可以来我的 Github 仓库,包含了完整图文:https://github.com/HanquanHq/MD-Notes,涵 ...
- 面试必会系列 - 4.1 程序员必须掌握的:计算机组成、操作系统知识点汇总
本文已收录至 Github(MD-Notes),若博客中图片模糊或打不开,可以来我的 Github 仓库,包含了完整图文:https://github.com/HanquanHq/MD-Notes,涵 ...
- 面试必会系列 - 3.1 Redis知识点大汇总(数据类型,内存模型,持久化,缓存击穿,集群,一致性哈希等等)
本文已收录至 Github(MD-Notes),若博客中图片模糊或打不开,可以来我的 Github 仓库,包含了完整图文:https://github.com/HanquanHq/MD-Notes,涵 ...
- 面试必会系列 - 2.1 MySQL知识点大汇总(基本架构,存储引擎,锁,事务,索引,B+树等等)
本文已收录至 Github(MD-Notes),若博客中图片模糊或打不开,可以来我的 Github 仓库,包含了完整图文:https://github.com/HanquanHq/MD-Notes,涵 ...
最新文章
- ERP与EWM集成配置---ERP 端(一)
- 为什么创业者专注做一个产品最好?
- pyspark模块介绍
- bim 模型web页面展示_BIM+装配式建筑工程师2020年必须拿下的技能证书
- 循环队列的java结构_java数据结构之循环队列(数组实现)
- 基于Java实现的快速排序
- 闻乐天授江州司马 [唐] 元稹
- dell 服务器r410装系统,dell r410安装windows2003系统
- C++标准程序库读书笔记-第二章新的语言特性
- 计算机c语言程序设计题,《计算机C语言程序设计》模拟题集.doc
- ANSI SQL 定义
- 中国移动通信研究院笔试题2
- java打印堆栈信息_Java 打印堆栈的几种方法
- phpDesigner 工具快捷键巧用
- 老九课堂c语言百度云,老九学堂C语言
- a标签中的href=javascript
- C++文件读取的四种方式
- 掌握这些PDF转Word方法,从此你就是大神的存在
- 【我的Android进阶之旅】Android 混淆文件资源分类整理之二:将混淆文件拆分成更小粒度的混淆文件
- word自动设置表格格式
热门文章
- 牛客 - maki和tree(dfs)
- POJ - 3678 Katu Puzzle(2-SAT)
- HDU - 2594 Simpsons’ Hidden Talents(KMP的next数组)
- 甘肃农业大学计算机基础A,2021甘肃农业大学计算机基础专业研究生考试大纲
- python mysql链接安全_Python最佳实践和最安全的方法来连接MySQL和执行查询
- python2使用openpyxl_使用openpyxl for Python2.6有些困难
- Lua 元表(Metatable)
- LXC C API 使用
- MySQL 中存储时间的最佳实践
- 第四期直播分享预告-高薪offer指南