♥JVM相关知识体系详解♥

本系列将给大家构建JVM核心知识点全局知识体系。@pdai

知识体系

学习要点

不同的虚拟机实现方式上也有差别,如果没有特别指出,这里的JVM指的是sun的HotSpot;不同的JDK版本略有差别,这里主要以1.8为主,具体差异请看各个章节中详解。下图主要表示的逻辑关系,用来将所有知识点放到一张图里,帮助你理解。

A. Java进阶 - JVM相关 知识体系: 首先按照上述学习思路,理解总体知识点在全局上与知识体系之间的对应关系。

B. Java进阶 - JVM相关 类加载: 然后理解类字节码和类的加载机制。

  • JVM基础 - 类字节码详解
    • 源代码通过编译器编译为字节码,再通过类加载子系统进行加载到JVM中运行
  • JVM基础 - 字节码的增强技术
    • 在上文中,着重介绍了字节码的结构,这为我们了解字节码增强技术的实现打下了基础。字节码增强技术就是一类对现有字节码进行修改或者动态生成全新字节码文件的技术。接下来,我们将从最直接操纵字节码的实现方式开始深入进行剖析。
  • JVM基础 - Java 类加载机制
    • 这篇文章将带你深入理解Java 类加载机制

C. Java进阶 - JVM相关 内存结构: 因为类字节码是加载到JVM内存结构中的,所以紧接着理解JVM内存结构。

D. Java进阶 - JVM相关 JMM: 然后通过理解JVM与硬件之间的联系,理解Java 通过其内存模型保证数据线程安全等,这是JVM在并发上底层的支持。

  • JVM基础 - Java 内存模型引入
    • 很多人都无法区分Java内存模型和JVM内存结构,以及Java内存模型与物理内存之间的关系。本文从堆栈角度引入JMM,然后介绍JMM和物理内存之间的关系, 为后面JMM详解, JVM 内存结构详解, Java 对象模型详解等铺垫。
  • JVM基础 - Java 内存模型详解
    • 本文主要转载自 Info 上深入理解Java内存模型在新窗口打开, 作者程晓明。这篇文章对JMM讲的很清楚了,大致分三部分:重排序与顺序一致性;三个同步原语(lock,volatile,final)的内存语义,重排序规则及在处理器中的实现;java 内存模型的设计,及其与处理器内存模型和顺序一致性内存模型的关系

E. Java进阶 - JVM相关 GC: 再者理解下Java GC机制,如何回收内存等。

  • GC - Java 垃圾回收基础知识
    • 垃圾收集主要是针对堆和方法区进行;程序计数器、虚拟机栈和本地方法栈这三个区域属于线程私有的,只存在于线程的生命周期内,线程结束之后也会消失,因此不需要对这三个区域进行垃圾回收。
  • GC - Java 垃圾回收器之G1详解
    • G1垃圾回收器是在Java7 update 4之后引入的一个新的垃圾回收器。同优秀的CMS垃圾回收器一样,G1也是关注最小时延的垃圾回收器,也同样适合大尺寸堆内存的垃圾收集,官方在ZGC还没有出现时也推荐使用G1来代替选择CMS。G1最大的特点是引入分区的思路,弱化了分代的概念,合理利用垃圾收集各个周期的资源,解决了其他收集器甚至CMS的众多缺陷。
  • GC - Java 垃圾回收器之ZGC详解
    • ZGC(The Z Garbage Collector)是JDK 11中推出的一款低延迟垃圾回收器, 是JDK 11+ 最为重要的更新之一,适用于大内存低延迟服务的内存管理和回收。在梳理相关知识点时,发现美团技术团队分享的文章新一代垃圾回收器ZGC的探索与实践在新窗口打开比较完善(包含G1收集器停顿时间瓶颈,原理,优化等), 这里分享给你,帮你构建ZGC相关的知识体系
  • GC - Java 垃圾回收器之CMS GC问题分析与解决

F. Java进阶 - JVM相关 排错调优: 最后围绕着调试和排错,分析理解JVM调优参数,动态字节码技术及动态在线调试的原理;学会使用常用的调工具和在线动态调试工具等。

学习文献