JVM

image-20250317164703322

组成

image-20250317172854665

image-20250317174117035

虚拟机栈

image-20250317174954218

image-20250317175027842

方法区

image-20250317175314817

image-20250317181300166

image-20250317181243875

直接内存

image-20250317181950772

image-20250317182115580

类加载器

image-20250317194353452

双亲委派模型

image-20250317194659909

image-20250317194808706

加载过程

image-20250317232307349

加载

image-20250317232538403

验证

image-20250317232728253

准备

image-20250317233214773

解析

image-20250317233344459

初始化

image-20250317233619522

垃圾回收

回收时机

image-20250317234535696

引用计数法

image-20250317234212971

可达性分析算法

image-20250317234317418

image-20250317234511875

垃圾回收算法

标记清除算法

image-20250317234707541

数组需要连续的空间,这种情况可能会导致数组无法创建。

标记整理算法

image-20250317234819540

复制算法

image-20250317234856297

分代回收算法

image-20250317235053241

image-20250317235426984

垃圾回收器

串行垃圾回收器

image-20250317235653949

并行垃圾回收器

image-20250317235741373

CMS(并发)垃圾回收器

image-20250318000020621

初始标记: 标记GC Root直接引用的对象

并发标记: 标记GC Root间接引用的所有对象

重新标记: 防止在并发标记阶段GC Root的引用链发生变化

G1垃圾回收器

image-20250318000443965

image-20250318000927218

image-20250318000911449

image-20250318001026909

image-20250318001331439

image-20250318001313467

引用

image-20250318235117537

image-20250318235234936

image-20250331121302030

image-20250318235450048

引用队列释放占用的外部资源

虚引用存在的意义就是监控对象是否存活

通过引用队列,程序可以获取到被gc的对象,进而手动的释放外部资源

alt text

JVM实践

调优参数

image-20250319160141038

image-20250319160240714

image-20250319160842828

image-20250319160926893

调优工具

image-20250319161428143

image-20250319163030709

image-20250319163228533

image-20250319163242235

image-20250319163257919

内存泄漏排查

image-20250319164002858

image-20250319164015975

image-20250319164026728

CPU飙高排查

image-20250319164529825

image-20250319164609293

image-20250319164700440