当前位置: 首页 > news >正文

JVM中部分主要垃圾回收器的特点、使用的算法以及适用场景

JVM中部分主要垃圾回收器的特点、使用的算法以及适用场景:

  1. Serial GC(串行收集器)

    • 特点:单线程执行,对新生代进行垃圾回收时采用复制算法(Copying),在老年代可能使用标记-压缩或标记-清除算法。
    • 算法:新生代 - 复制算法;老年代 - 可能是标记-压缩或标记-清除(取决于具体配置和JVM版本)。
    • 适用场景:客户端模式下的Java应用,或者内存较小的服务器环境,强调快速简单且CPU资源有限。
  2. Parallel GC(并行收集器,也称为吞吐量收集器Throughput Collector)

    • 特点:多线程并行执行,对新生代使用复制算法,在老年代可能使用标记-压缩算法。
    • 算法:新生代 - 并行复制算法;老年代 - 标记-压缩算法。
    • 适用场景:适用于多核处理器机器,追求高吞吐量,可以接受较长时间STW的应用。
  3. CMS (Concurrent Mark Sweep) 收集器

    • 特点:并发标记清除算法,主要用于老年代,目标是在低延迟下运行,减少Stop-The-World的时间。
    • 算法:并发标记-清除(Concurrent Mark-Sweep)。
    • 适用场景:对响应时间敏感的服务端应用,需要尽量降低停顿时间,但可能产生内存碎片。
  4. G1 (Garbage-First) 收集器

    • 特点:全局并发标记和局部并发整理,将堆划分为多个Region,按需进行回收,目标是可预测的暂停时间,并且避免了全堆扫描。
    • 算法:整体上结合了复制和标记-压缩的思想,实现了混合式的垃圾回收策略。
    • 适用场景:大型堆(如超过约6GB以上)、长期服务应用,要求停顿时间可控且尽可能短。
  5. ZGC (Z Garbage Collector)

    • 特点:设计目标为任何大小堆上的停顿时间不超过10ms,使用了颜色指针、读屏障等技术,实现并发标记与并发压缩。
    • 算法:并发标记-压缩,使用染色指针技术来跟踪对象引用关系。
    • 适用场景:对停顿时间有严格要求的大规模数据处理系统,尤其适合云环境和其他需要低延时的场景。
  6. Shenandoah

    • 特点:类似于ZGC,同样致力于极低的停顿时间,通过并发压缩和原地更新引用等技术实现。
    • 算法:并发标记-压缩,具有独特的“并发转移”阶段,可以在不暂停应用的情况下移动对象。
    • 适用场景:与ZGC相似,适用于对响应时间和停顿时间有苛刻要求的应用。
http://www.lryc.cn/news/272075.html

相关文章:

  • vue保姆级教程----深入了解Vuex的工作原理
  • (JAVA)-(网络编程)-InetAddress(ip)
  • 手把手带你死磕ORBSLAM3源代码(二十二)Tracking.cc PrintTimeStats介绍
  • 【操作系统xv6】学习记录3-Wsl2 Ubuntu18.04图形化界面
  • CCNP课程实验-03-Route_Path_Control_CFG
  • STM32 学习(二)GPIO
  • 安卓作业001 - 显示学生信息
  • ARM CCA机密计算硬件架构之内存管理
  • MySQL--安装与配置与向日葵的基本操作使用
  • Vue - 多行文本“展开、收起”功能
  • Linux操作系统基础(6):Linux的文件颜色
  • LeetCode 1758. 生成交替二进制字符串的最少操作数【字符串,模拟】1353
  • Spring-IOC-xml方式
  • HUAWEI华为荣耀MagicBook X 15酷睿i5-10210U处理器集显(BBR-WAH9)笔记本电脑原装出厂Windows10系统
  • React使用动态标签名称
  • Java异常篇----第二篇
  • 微服务(1)
  • 195.【2023年华为OD机试真题(C卷)】5G 网络建设(最小生成树—JavaPythonC++JS实现)
  • 2024年1月1日答案
  • 【算法】dp题单
  • Verilog视频信号图形显示 FPGA(iCE40)
  • 【LeetCode 面试经典150题】26. Remove Duplicates from Sorted Array 在有序数组中移除重复元素
  • linux系统下sql脚本的执行与导出
  • MyBatis学习一:快速入门
  • 零售业物流这个防漏水技术,居然没有翻车!
  • 主浏览器优化之路1——你现在在用的是什么浏览器?Edge?谷歌?火狐?360!?
  • gitlab请求合并分支
  • 使用Vue3开发学生管理系统模板1
  • 【cmake实战:番外】交叉编译——Linaro
  • 2024年年初Java5年实战面试题(北京)