Skip to content

215559085/InsideHotSpotVM

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

71 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Inside HotSpot VM

关于HotSpot(OpenJDK12)的内幕,对某个部分感兴趣的朋友可以创建Issue说明。Github Just-In-Time更新,博客滞后更新。(注:WIP表示未完成的文章)

解释器

  • 模板解释器
    1. 简介
    2. 解释器的两种实现
    3. 解释器
      1. 抽象解释器
      2. 模板解释器
    4. 解释器生成器
      1. 生成器与解释器的关系
      2. 示例:数组越界异常例程生成

编译器

运行时

  • 加载字节码到JVM WIP
    1. 字节码文件解析器
    2. 类加载器
      1. Bootstrap类加载器 WIP
  • Java的方法调用
    1. 方法调用模块入口
    2. 寻找调用方法
    3. 建立栈帧
    4. Java方法调用
    5. 总结
    6. 附1:使用hsdis查看对应的汇编表示
    7. 附2:解释器入口点

GC

  • 安全点
    1. 安全点简介
    2. 创建安全点
    3. 线程局部握手
    4. 白盒测试API
    5. 基于线程握手的实现
  • Java分代堆
    1. 宇宙初始化
    2. 创建Java堆
    3. 初始化Java堆
    4. JVM分代堆详细结构
      1. CollectedHeap
      2. GenCollectedHeap
      3. SerialHeap
    5. 分代堆中的卡表代
  • Epsilon GC
    1. Epsilon GC简介
    2. EpsilonGC创建
    3. 内存分配
      1. 普通内存分配
      2. TLAB内存分配
    4. 垃圾回收
  • Serial垃圾回收器 (一) Full GC 0. Serial垃圾回收器Full GC
    1. 阶段1:标记存活对象
    2. 阶段2:计算对象新地址
    3. 阶段3:调整对象指针
    4. 阶段4:移动对象
  • Serial垃圾回收器 (二) Minor GC
    1. DefNewGeneration垃圾回收
    2. 快速扫描闭包(FastScanClosure)
      1. 新生代到To survivor的复制
      2. GC屏障
    3. 快速成员处理闭包(FastEvacuateFollowersClosure)
  • UseParallelGC和UseParallelOldGC的区别

其他

附注

  1. 文章中JVM,jvm,hotspot,HotSpot等都表示的OpenJDK12的HotSpot虚拟机实现;From,from,From survivor一个意思;To,To survivor一个意思;
  2. 代码的部分干扰比如断言,繁琐不重要的日志记录已清除
  3. 强烈建议每一章按照自上而下的顺序阅读,因为下一篇文章很有可能需要上一篇文章的知识

扩展阅读

  • [1] Christian Wimmer: SSA Form for the Java HotSpot™ Client Compiler
  • [2] Christian Wimmer: Linear Scan Register Allocation for the Java HotSpot™ Client Compiler
  • [3] Thomas Würthinger, Christian Wimmer, Hanspeter Mössenböck: Visualization of Program Dependence Graphs
  • [4] Michael Paleczny, Christopher Vick,Cliff Click: The Java HotSpotTM Server Compiler
  • [5] Cliff Click: From Quads to Graphs: An Intermediate Representation's Journey
  • [6] http://compileroptimizations.com/index.html

About

You Don't Know JVM

Resources

Stars

Watchers

Forks

Releases

No releases published

Sponsor this project

Packages

No packages published