一、JVM类加载机制——自定义类加载器
二、JVM——对象内存分配机制
三、JVM内存模型
四、JVM垃圾收集算法和垃圾收集器
五、CMS垃圾回收器——三色标记算法
六、G1垃圾收集器
七、JVM调优实战——基本命令使用
八、JVM调优实战——arthas使用
九、大流量电商系统JVM调优案例
1、标记-清除算法
标记出需要回收的对象,然后清除该对象。
不足:(1)回收效率比较低
(2)产生大量的不连续的内存碎片
2、复制算法
解决标记-清除算法效率低的问题,适合在新生代使用;当这一块的内存使用完后,就将还存活的对象复制到另一块内存中去,然后把使用的空间一次清理掉。
3、标记-整理算法
标记过程与“标记—清除算法”一样,但后续步骤不是直接回收对象,还是让存活的移动到一端,清理掉端边界以外的内存区域。
垃圾收集器1、Serial收集器-新生代
单线程收集器,进行垃圾回收时,必须暂停其他的所有线程,直到它收集结束。
2、ParNew收集器-新生代
Serial收集器的多线程版本,运行在server模式下的虚拟机首选的新生代收集器,除了Serial收集器,只有ParNew可以和CMS搭配使用。
3、Parallel Scavenge收集器-新生代
目标:达到一个可控制的吞吐量,又被称为“吞吐量优先”收集器,具有自适应调节策略的能力
4、Serial Old收集器-老年代
是serial收集器的老年版本,同样是一个单线程收集器;
使用标记-整理算法
主要用于client模式下;
如果用在server模式下,主要用于两个用途:
(1)在JDK1.5之前和Paralle Scavenge收集器一起使用
(2)作为CMS收集器的后备方案,在并发收集发生问题时使用。
5、Parallal Old 收集器-老年代
是Paralle Scanven收集器的老年代版本,使用多线程和标记-整理算法;
在注重吞吐量和CPU敏感的场合,推荐使用:Parallel Scavenge和Parallel收集器的组合。
6、CMS收集器-老年代
CMS垃圾回收器——三色标记算法
以获取最短回收时间为目标的收集器。
初始标记——并发标记——重新标记——并发清除
7、G1收集器-横跨年轻代和老年代
优点很多的集大成者。G1垃圾收集器