0

0

说一下 jvm 有哪些垃圾回收器?

煙雲

煙雲

发布时间:2025-11-15 12:38:03

|

763人浏览过

|

来源于php中文网

原创

jvm垃圾回收器包括serial、parnew、parallel scavenge等新生代收集器,serial old、parallel old、cms等老年代收集器,以及g1、zgc、shenandoah等整堆收集器,适用于不同场景;其中g1和zgc因兼顾低延迟与高吞吐量,成为现代应用主流选择。

说一下 jvm 有哪些垃圾回收器?

JVM 的垃圾回收器种类多样,主要为了适应不同应用场景的需求,比如追求高吞吐量、低延迟或大内存管理。以下是目前主流和常见的 JVM 垃圾回收器:

新生代收集器

这类收集器专门负责回收新生代(Young Generation)的内存。

关于Objective
关于Objective

本文档主要讲述的是关于Objective-C手动内存管理的规则;在ios开发中Objective-C 增加了一些新的东西,包括属性和垃圾回收。那么,我们在学习Objective-C之前,最好应该先了解,从前是什么样的,为什么Objective-C 要增加这些支持。有需要的朋友可以下载看看

下载
  • Serial 收集器:最基本的单线程收集器,使用“复制算法”。在进行垃圾回收时会暂停所有用户线程(Stop-The-World)。简单高效,适合客户端应用或单核 CPU 环境。
  • ParNew 收集器:Serial 收集器的多线程版本,同样使用“复制算法”。除了可以并行执行,其他特性与 Serial 类似。常与 CMS 老年代收集器配合使用。
  • Parallel Scavenge 收集器:一个注重吞吐量的并行收集器,也采用“复制算法”。它允许用户精确控制吞吐量和最大停顿时间,适合后台计算等对响应时间不敏感但要求高效率的场景。

老年代收集器

这些收集器用于回收老年代(Old Generation)的内存。

  • Serial Old 收集器:Serial 收集器的老年代版本,使用“标记-整理算法”,也是单线程的。主要用于客户端模式或作为 CMS 收集器的后备方案。
  • Parallel Old 收集器:Parallel Scavenge 的老年代搭档,使用“标记-整理算法”实现并行回收,主打高吞吐量。
  • CMS (Concurrent Mark Sweep) 收集器:以获取最短停顿时间为目标的并发收集器,使用“标记-清除算法”。它可以与用户线程并发执行大部分工作,减少停顿。但它会产生内存碎片,且对 CPU 资源敏感。注意:CMS 在 JDK 14 中已被移除。

整堆收集器

这类收集器不再严格区分新生代和老年代,而是将整个堆作为整体来管理。

  • G1 (Garbage First) 收集器:面向服务端应用的收集器,适用于大内存、多核 CPU 的机器。它将堆划分为多个 Region,优先回收垃圾最多的区域,兼顾了高吞吐量和低停顿时间。从 JDK 9 开始成为默认收集器,是目前互联网项目的主流选择。
  • ZGC (Z Garbage Collector):一款以极低延迟为目标的收集器,目标是将停顿时间控制在 10 毫秒以内,甚至更短。它能处理非常大的堆(TB 级),适合对响应时间有严苛要求的应用。
  • Shenandoah 收集器:与 ZGC 目标类似,专注于降低 GC 停顿时间,通过更激进的并发处理实现快速回收。
基本上就这些。选择哪种收集器取决于你的应用需求、硬件配置和使用的 JDK 版本。现代应用普遍推荐使用 G1 或 ZGC。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
堆和栈的区别
堆和栈的区别

堆和栈的区别:1、内存分配方式不同;2、大小不同;3、数据访问方式不同;4、数据的生命周期。本专题为大家提供堆和栈的区别的相关的文章、下载、课程内容,供大家免费下载体验。

443

2023.07.18

堆和栈区别
堆和栈区别

堆(Heap)和栈(Stack)是计算机中两种常见的内存分配机制。它们在内存管理的方式、分配方式以及使用场景上有很大的区别。本文将详细介绍堆和栈的特点、区别以及各自的使用场景。php中文网给大家带来了相关的教程以及文章欢迎大家前来学习阅读。

605

2023.08.10

线程和进程的区别
线程和进程的区别

线程和进程的区别:线程是进程的一部分,用于实现并发和并行操作,而线程共享进程的资源,通信更方便快捷,切换开销较小。本专题为大家提供线程和进程区别相关的各种文章、以及下载和课程。

765

2023.08.10

Python 多线程与异步编程实战
Python 多线程与异步编程实战

本专题系统讲解 Python 多线程与异步编程的核心概念与实战技巧,包括 threading 模块基础、线程同步机制、GIL 原理、asyncio 异步任务管理、协程与事件循环、任务调度与异常处理。通过实战示例,帮助学习者掌握 如何构建高性能、多任务并发的 Python 应用。

377

2025.12.24

java多线程相关教程合集
java多线程相关教程合集

本专题整合了java多线程相关教程,阅读专题下面的文章了解更多详细内容。

31

2026.01.21

C++多线程相关合集
C++多线程相关合集

本专题整合了C++多线程相关教程,阅读专题下面的的文章了解更多详细内容。

29

2026.01.21

C# 多线程与异步编程
C# 多线程与异步编程

本专题深入讲解 C# 中多线程与异步编程的核心概念与实战技巧,包括线程池管理、Task 类的使用、async/await 异步编程模式、并发控制与线程同步、死锁与竞态条件的解决方案。通过实际项目,帮助开发者掌握 如何在 C# 中构建高并发、低延迟的异步系统,提升应用性能和响应速度。

103

2026.02.06

页面置换算法
页面置换算法

页面置换算法是操作系统中用来决定在内存中哪些页面应该被换出以便为新的页面提供空间的算法。本专题为大家提供页面置换算法的相关文章,大家可以免费体验。

494

2023.08.14

C# ASP.NET Core微服务架构与API网关实践
C# ASP.NET Core微服务架构与API网关实践

本专题围绕 C# 在现代后端架构中的微服务实践展开,系统讲解基于 ASP.NET Core 构建可扩展服务体系的核心方法。内容涵盖服务拆分策略、RESTful API 设计、服务间通信、API 网关统一入口管理以及服务治理机制。通过真实项目案例,帮助开发者掌握构建高可用微服务系统的关键技术,提高系统的可扩展性与维护效率。

3

2026.03.11

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

相关下载

更多

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
ThinkPHP配置开发与CMS后台实战
ThinkPHP配置开发与CMS后台实战

共87课时 | 9.4万人学习

第二十三期_综合实战
第二十三期_综合实战

共89课时 | 7.4万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号