JVM体系结构与GC调优深度解析

1.JVM体系结构概览

这里写图片描述

这里写图片描述

2.GC算法

分类:

  1. 引用计数法:每个对象维护一个引用计数器记录其被引用数,当被引用数为0时即可回收 
  2. 这里写图片描述
  3. 跟踪法(可达性分析算法):从GC Roots出发向下搜索,不可达的对象即可回收 
  4. GC Roots对象: 
  5. 虚拟机栈(栈帧中的本地变量表)中引用的对象
  6. 本地方法栈中JNI(即native方法)引用的对象
  7. 方法区中类静态属性引用的对象
  8. 方法区中常量引用的对象

在可达性分析算法中不可达的对象,也并非就判定为“死亡”了;判定一个对象最终是否死亡,至少经历两次标记过程:

  1. 不可达的对象会被 第一次标记
  2. 被第一次标记的对象进行 判断是否有必要执行finalize(),若对象覆盖了finalize()方法 且 finalize() 没有执行过,若都满足则执行finalize();
  3. 在finalize()中,若对象重新和引用链上的任一对象建立关联,则不会被第二次标记,它则不会被回收。 
  4. 这里写图片描述

1.复制

这里写图片描述

2.标记清除

这里写图片描述

3.标记压缩

这里写图片描述

4.标记清除压缩

  • 原理: 
  1. Mark-Sweep和Mark-Compact结合
  2. 和Mark-Sweep一致,当进行多次GC后才Compact
  • 优点: 
  • 减少移动对象的成本

3.Hotspot内存管理

这里写图片描述

这里写图片描述

这里写图片描述

4.Hotspot垃圾回收器

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

1.新生代垃圾回收器

这里写图片描述

1.Serial Copying

这里写图片描述

2.ParNew

这里写图片描述

3.Parallel Scavenge(吞吐量优先)

这里写图片描述 

这里写图片描述

2.旧生代垃圾回收器

这里写图片描述

1.Serial MSC(Serial Old)

这里写图片描述

2.Parallel Compacting(Parallel Old)

这里写图片描述 

这里写图片描述

3.CMS(并发低停顿)

这里写图片描述

这里写图片描述

这里写图片描述

5.调优

1.堆大小调优

这里写图片描述

这里写图片描述

2.新生代调优

1.大小

这里写图片描述

2.晋升

这里写图片描述 

这里写图片描述

3.旧生代调优

这里写图片描述

6.监控工具

这里写图片描述

这里写图片描述

这里写图片描述

评论区
Rick ©2018