6.GC垃圾回收算法和垃圾收集器的关系?分别是什么请你谈谈
说明
本文目录前是相关视频的名字和具体视频中思维导图的名字
题目
6.GC垃圾回收算法和垃圾收集器的关系?分别是什么请你谈谈
GC算法(引用计数/复制/标清/标整)是内存回收的方法论,垃圾收集器就是算法落地实现。
天上飞的理念,要有落地的实现(垃圾收集器就是GC垃圾回收算法的实现)
GC算法是内存回收的方法论,垃圾收集器就是算法的落地实现
GC算法主要有以下几种
引用计数(几乎不用,无法解决循环引用的问题)
复制拷贝(用于新生代)
标记清除(用于老年代)
标记整理(用于老年代)
因为目前为止还没有完美的收集器出现,更加没有万能的收集器,只是针对具体应用最合适的收集器,进行分代收集
那个代用什么收集器
4种主要垃圾收集器
- Serial:串行回收 -XX:+UseSeriallGC
- Parallel:并行回收 -XX:+UseParallelGC
- CMS:并发标记清除
- G1
- ZGC:(java 11 出现的)
串行垃圾回收器(Serial)
串行垃圾回收器,它为单线程环境设计且值使用一个线程进行垃圾收集,会暂停所有的用户线程,只有当垃圾回收完成时,才会重新唤醒主线程继续执行。所以不适合服务器环境
STOP THE WORLD
并行垃圾回收器(Parallel)
并行垃圾收集器,多个垃圾收集线程并行工作,此时用户线程也是阻塞的,适用于科学计算 / 大数据处理等弱交互场景,也就是说Serial 和 Parallel其实是类似的,不过是多了几个线程进行垃圾收集,但是主线程都会被暂停,但是并行垃圾收集器处理时间,肯定比串行的垃圾收集器要更短
并发垃圾回收器(CMS)
并发标记清除,用户线程和垃圾收集线程同时执行(不一定是并行,可能是交替执行),不需要停顿用户线程,互联网公司都在使用,适用于响应时间有要求的场景。并发是可以有交互的,也就是说可以一边进行收集,一边执行应用程序。
上述3个小总结,G1特殊后面说
G1垃圾回收器
G1垃圾回收器将堆内存分割成不同区域,然后并发的进行垃圾回收