Java垃圾搜集器
按照线程数量来分:
- 串行 串行垃圾回收器一次只使用一个线程进行垃圾回收
- 并行 并行垃圾回收器一次将开启多个线程同时进行垃圾回收。
按照工作模式来分:
- 并发 并发式垃圾回收器与应用程序线程交替工作,以尽可能减少应用程序的停顿时间
- 独占 一旦运行,就停止应用程序中的其他所有线程,直到垃圾回收过程完全结束
按照碎片处理方式:
- 压缩式 压缩式垃圾回收器会在回收完成后,对存活对象进行压缩整消除回收后的碎片;
- 非压缩式 非压缩式的垃圾回收器不进行这步操作。
按工作的内存区间 可分为新生代垃圾回收器和老年代垃圾回收器
-
新生代串行收集器 serial 它仅仅使用单线程进行垃圾回收;第二,它独占式的垃圾回收。使用复制算法。
-
老年代串行收集器 serial old 年代串行收集器使用的是标记-压缩算法。和新生代串行收集器一样,它也是一个串行的、独占式的垃圾回收器
-
并行收集器 parnew 并行收集器是工作在新生代的垃圾收集器,它只简单地将串行回收器多线程化。它的回收策略、算法以及参数和串行回收器一样并行回收器也是独占式的回收器,在收集过程中,应用程序会全部暂停。但由于并行回收器使用多线程进行垃圾回收,因此,在并发能力比较强的 CPU 上,它产生的停顿时间要短于串行回收器,而在单 CPU或者并发能力较弱的系统中,并行回收器的效果不会比串行回收器好,由于多线程的压力,它的实际表现很可能比串行回收器差。
-
新生代并行回收 (Parallel Scavenge) 收集器新生代并行回收收集器也是使用复制算法的收集器。从表面上看,它和并行收集器一样都是多线程、独占式的收集器。但是,并行回收收集器有一个重要的特点:它非常关注系统的吞吐量。
-
老年代并行回收收集器 parallel old老年代的并行回收收集器也是一种多线程并发的收集器。和新生代并行回收收集器一样,它也是一种关注吞吐量的收集器。老年代并行回收收集器使用标记-压缩算法,JDK1.6 之后开始启用。
-
CMS 收集器 CMS 收集器主要关注于系统停顿时间。CMS 是 Concurrent Mark Sweep 的缩写,意为并发标记清除,从名称上可以得知,它使用的是标记-清除算法,同时它又是一个使用多线程并发回收的垃圾收集器。
-
CMS工作时,主要步骤有:初始标记、并发标记、重新标记、并发清除和并发重置。其中初始标记和重新标记是独占系统资源的,而并发标记、并发清除和并发重置是可以和用户线程一起执行的。因此,从整体上来说,CMS收集不是独占式的,它可以在应用程序运行过程中进行垃圾回收。
-
根据标记-清除算法,初始标记、并发标记和重新标记都是为了标记出需要回收的对象。并发清理则是在标记完成后,正式回收垃圾对象;并发重置是指在垃圾回收完成后,重新初始化CMS 数据结构和数据,为下一次垃圾回收做好准备。并发标记、并发清理和并发重置都是可以和应用程序线程一起执行的。
-
-
G1 收集器 G1 收集器是基于标记-压缩算法的。因此,它不会产生空间碎片,也没有必要在收集完成后,进行一次独占式的碎片整理工作。G1 收集器还可以进行非常精确的停顿控制。
相关文章
- Android进程so注入Hook java方法
- JAVA垃圾收集机制剖析
- 【JAVA】JSP操作数据库简单实例和mysql-connector-java-5.0.3-bin.jar项目配置方法
- 从 JDK 8 到 JDK 18,Java 垃圾回收的十次进化
- Java反编译生成java文件
- Predicate和Consumer接口– Java 8中java.util.function包下的接口
- 记录Java的垃圾回收机制和几种引用
- Java开发环境的搭建以及使用eclipse从头一步步创建java项目
- 第七节:详细讲解Java中的日期,java.util.date
- Java虚拟机垃圾回收(三) 7种垃圾收集器:主要特点 应用场景 设置参数 基本运行原理
- Error: could not find java.dll如何解决
- Java 设计模式之桥接模式,Java 桥接模式 ,java Bridge Pattern
- Java条形码生成技术-Barcode4j
- Java作业19---Gui图片
- 在java中使用JMH(Java Microbenchmark Harness)做性能测试
- Java .class 反编译 Luyten,导出 .java文件,查看jar 包目录,超级简单,实用
- Java_如何等待子线程执行结束
- Java调用OCR进行图片识别
- Java使用RabbitMQ之订阅分发(Topic)
- Java设计模式之行为型:命令模式
- 『Java练习生的自我修养』java-se进阶² • 并发与多线程
- java方法中把对象置null,到底能不能加速垃圾回收
- 【JAVA】Exception in thread "main" java.lang.NoClassDefFoundError
- Pearson product-moment correlation coefficient in java(java的简单相关系数算法)
- Android开发之Java代码规范
- java中split()特殊符号"." "|" "*" "" "]"