技术文摘
九款常见 JVM 垃圾回收器
九款常见 JVM 垃圾回收器
在 Java 虚拟机(JVM)中,垃圾回收器负责自动回收不再使用的内存,以确保程序的稳定运行和资源的有效利用。以下是九款常见的 JVM 垃圾回收器:
Serial 收集器 这是最基本、历史最悠久的垃圾回收器。它是一个单线程的收集器,在进行垃圾回收时,必须暂停其他所有的工作线程,直到垃圾回收完成。
ParNew 收集器 ParNew 收集器其实是 Serial 收集器的多线程版本,除了使用多条线程进行垃圾收集外,其余行为和 Serial 收集器完全一样。
Parallel Scavenge 收集器 这是一个新生代收集器,也是使用复制算法的并行多线程收集器。它的目标是达到一个可控制的吞吐量。
Serial Old 收集器 Serial Old 是 Serial 收集器的老年代版本,同样是单线程收集器,使用“标记-整理”算法。
Parallel Old 收集器 Parallel Old 是 Parallel Scavenge 收集器的老年代版本,使用多线程和“标记-整理”算法。
CMS 收集器 CMS(Concurrent Mark Sweep)收集器是一种以获取最短回收停顿时间为目标的收集器。它的过程相对复杂,分为初始标记、并发标记、重新标记和并发清除四个阶段。
G1 收集器 G1(Garbage-First)收集器是一款面向服务端应用的垃圾收集器。它将堆内存划分为多个大小相等的 Region,在回收时能以 Region 为单位进行回收。
Shenandoah 收集器 Shenandoah 是一款低停顿时间的垃圾回收器,它能在堆内存的更新操作时,尽量减少同步屏障的使用。
ZGC 收集器 ZGC 是一款具有极短停顿时间的垃圾回收器,它能处理从几 GB 到几 TB 的堆内存。
不同的垃圾回收器在不同的应用场景下有着各自的优势和适用范围。在实际应用中,需要根据系统的性能要求、硬件资源和应用程序的特点来选择合适的垃圾回收器,以达到最优的性能和资源利用效果。
了解和掌握这些常见的 JVM 垃圾回收器对于优化 Java 应用程序的性能至关重要。通过合理的选择和配置,可以有效地提高系统的稳定性和响应速度。
- .NET Core 3.0 功能亮点抢先探秘
- 编程语言趋势预测:Rust有望成为主流,React持续统治编程领域
- 7 月 GitHub 热门开源项目
- 区块链技术热度颇高 其主要开发语言需知
- 进程栈分析的两个命令:Pstack 与 Starce 详解
- 2019 年 8 月集成开发环境(IDE)热度排名
- Linux 在低内存条件下性能糟糕引开发者抱怨
- 自动生成电子邮件的检测方法
- 开源软件何以击败专利软件称霸未来
- MQ 如何在高速飞机上实现引擎平滑迁移
- 轻松上手:编写专属 SpringBoot-Starter
- GitHub 十大 JavaScript 项目
- HTTP 中 GET 与 POST 的区别 多数人理解有误
- 华为开发者大会开幕:筑生态 聚朋友
- 华为全方位开放 HMS 打造全场景智慧新生态