天天看点

深入理解JVM - 阅读笔记之思维导图 - 第 7 章 虚拟机类加载机制章节概览笔记

文章目录

  • 章节概览
  • 笔记
    • 1. 遇到 `new`, `getstatic`, `putstatic`, `invokestatic` 这 4 条字节码指令时,类没有初始化时,则初始化该类
    • 2. 使用 java.lang.reflect 包进行 `反射` 时,类没有初始化,则初始化该类
    • 3. 将常量池内的符号引用替换为直接引用

章节概览

完整版的内容请点击这里

完整版的内容请点击这里

完整版的内容请点击这里

本章节主要分为 3 个部分:① 类加载时机,② 类加载过程,③ 类加载器

第 7 章节思维导图(更新于2019年4月17日)

深入理解JVM - 阅读笔记之思维导图 - 第 7 章 虚拟机类加载机制章节概览笔记

笔记

1. 遇到

new

,

getstatic

,

putstatic

,

invokestatic

这 4 条字节码指令时,类没有初始化时,则初始化该类

生成这 4 条指令的最常见的 Java 代码场景是:

  1. 使用 new 关键字实例化对象的时候
  2. 读取或设置一个类的静态字段(被 final 修饰,已在编译期把结果放入常量池的静态字段除外)的时候
  3. 调用一个类的静态方法的时候

2. 使用 java.lang.reflect 包进行

反射

时,类没有初始化,则初始化该类

这里是关于反射的一些知识

Java 反射由浅入深

反射的用途及实现

3. 将常量池内的符号引用替换为直接引用

符号引用:用一组符号描述所引用的目标,只要能无歧义的定位到目标即可

直接引用:用指向目标的指针、相对偏移量或一个能间接定位到目标的句柄