Skip to the content.

..

JVM

架构

内存区域划分(todo)

运行时栈帧结构(todo)

类加载

类加载器(todo)

双亲委派机制

打破双亲委派机制

tomcat(加载自己定制的目录)(todo)
SPI

线程上下文的类加载器

OSGi

如何替换 JDK 的类

垃圾回收算法

引用级别

强引用

软引用

弱引用

虚引用

OOM 场景

区域 是否线程私有 是否会发生OOM
程序计数器
虚拟机栈
本地方法栈
方法区
直接内存

朴素算法

复制算法(Copy)

标记-清除(Mark-Sweep)

标记-整理(Mark-Compact)

分代垃圾回收

弱代假设

大部分对象的生命周期都很短,其他对象则很可能会存活很长时间

分代垃圾回收

年轻代

老年代

垃圾回收器

年轻代垃圾回收器

Serial 垃圾收集器Serial 垃圾收集器

ParNew 垃圾收集器

Parallel Scavenge 垃圾收集器

老年代垃圾收集器

Serial Old 垃圾收集器

Parallel Old

CMS 垃圾收集器

CMS 回收过程
初始标记(Initial Mark)(todo)
并发标记(Concurrent Mark)(todo)
并发预清理(Concurrent Preclean)
并发可取消的预清理(Concurrent Abortable Preclean)
最终标记(Final Remark)
并发清除(Concurrent Sweep)(todo)
并发重置(Concurrent Reset)
内存碎片
CMS 中都会有哪些停顿
优势
劣势
极端场景

G1垃圾回收器

目标: 停顿时间可控

内存结构

G1 的回收过程

RSet

CSet

ZGC

设计目标

配置参数

JIT

热点代码

被频繁调用的代码,会被编译成机器码缓存起来,以备下次使用

分层编译

在不启用分层编译的情况下(Mixed混合模式),当方法的调用次数和循环回边的次数总和,超过由参数 -XX:CompileThreshold 指定的阈值时,便会触发即时编译;当启用分层编译时,这个参数将会失效,会采用动态调整的方式进行

五个层级

避免冷启动后的CPU高负载

优化手段

方法内联

逃逸分析

intrinsic