JVM 概览

2024/2/21 Java虚拟机【JVM】

Java虚拟机【JVM】有很多版本,如未特别指明,则指的是JDK8的HotSpot。

JVM结构图

红色字体标记部分为后续主要详解内容。

# 1、JVM基础

# 1.1、类字节码

  • 类文件结构

  • 常量池
  • 访问标志
  • 类和接口索引
  • 字段表属性
  • 方法表属性
  • 属性表属性
  • 理解字节码

  • javac、javap
  • 其它语言:比如kotlin

# 1.2、类加载机制

  • 类生命周期

  • 加载
  • 连接:验证、准备、解析
  • 初始化
  • 使用
  • 卸载
  • 类加载机制

  • 类加载器:启动类加载器、扩展类加载器、应用程序类加载器、自定义类加载器
  • 寻找类加载器
  • 类的加载方式
  • JVM类加载机制:全盘负责、父类委托、缓存机制、双亲委派机制

# 1.3、JVM内存结构

  • 程序计数器
  • Java虚拟机栈
  • 本地方法栈
  • 方法区

  • 新生代:Eden(伊甸园区)、From Survivor(幸存1区)、To Survivor(幸存2区)
  • 老年代
  • 元空间区(物理内存)

# 1.4、Java内存模型【JMM】

  • JMM内存模型结构

  • JMM介绍
  • 并发问题
  • 重排序
  • 顺序一致性

# 2、GC垃圾回收

# 2.1、GC垃圾回收基础

  • 对象回收条件

  • 引用计数算法
  • 可达性分析算法
  • 方法区的回收
  • finalize()
  • 引用类型

  • 强引用
  • 软引用
  • 弱引用
  • 虚引用
  • 垃圾回收算法

  • 标记-清除
  • 标记-整理
  • 复制
  • 分代收集
  • 垃圾收集器

  • Serial收集器
  • ParNew收集器
  • Parallel Scavenge 收集器
  • Serial Old 收集器
  • Parallel Old 收集器
  • CMS收集器
  • G1收集器
  • 内存分配与回收策略

  • Minor GC 和 Full GC
  • 内存分配策略
  • Full GC的触发条件

# 2.2、G1-垃圾回收器

# 2.3、ZGC-垃圾回收器

# 2.4、CMS-垃圾回收器

# 3、JVM调优

# 3.1、JVM调优参数配置

# 3.2、JVM问题排查

# 3.3、JVM调试排查工具

# 3.4、IDEA调试排查