首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

完全GC与G1 GC中的主要GC

完全GC(Full GC)和G1 GC(Garbage-First GC)是Java虚拟机(JVM)中的两种垃圾回收算法。它们都是用于自动内存管理的算法,旨在清理不再使用的对象,以便释放内存空间。

  1. 完全GC(Full GC): 完全GC是指对整个Java堆进行垃圾回收的过程。在完全GC期间,JVM会停止应用程序的所有线程,并扫描整个堆内存,清理未引用的对象。这是一种较为激进的垃圾回收方式,会导致较长的停顿时间,并且对应用程序的性能有一定的影响。

主要GC算法有标记-清除(Mark-Sweep)和标记-整理(Mark-Compact)两种。标记-清除算法会首先标记所有可达对象,然后清除未被标记的对象。标记-整理算法会先标记所有可达对象,然后将存活的对象向一端移动,最后清理堆的末尾空间。

  1. G1 GC(Garbage-First GC): G1 GC是一种新一代的垃圾回收器,相比完全GC更加高效。它基于分代收集理论,将Java堆分为不同的区域(Region),每个区域可以是Eden区、Survivor区或Old区。G1 GC的主要目标是在有限的时间内,尽量回收更多的垃圾对象。

G1 GC使用基于区域的方式进行垃圾回收,它会根据垃圾对象的分布情况,优先选择垃圾密集的区域进行回收。这就是“Garbage-First”(首先处理垃圾)的含义。G1 GC还会根据应用程序的运行情况动态调整回收策略,以尽量减少停顿时间。

G1 GC的优势包括:

  • 较短的停顿时间:相比完全GC,G1 GC可以在更短的时间内完成垃圾回收。
  • 更好的内存利用率:G1 GC可以避免内存碎片的问题,提供更好的内存利用率。
  • 可预测的性能:G1 GC可以通过设置目标停顿时间来平衡吞吐量和停顿时间。

应用场景: G1 GC适用于需要较低停顿时间和更好吞吐量的场景,特别是对于大堆内存、多核处理器和分布式应用程序而言,它的性能表现更为出色。

腾讯云相关产品和产品介绍链接地址:

  • 腾讯云云服务器(CVM):https://cloud.tencent.com/product/cvm
  • 腾讯云云原生容器服务(TKE):https://cloud.tencent.com/product/tke
  • 腾讯云数据库(TencentDB):https://cloud.tencent.com/product/cdb
  • 腾讯云CDN加速(CDN):https://cloud.tencent.com/product/cdn
  • 腾讯云视频直播(CSS):https://cloud.tencent.com/product/css
  • 腾讯云人工智能(AI):https://cloud.tencent.com/product/ai
  • 腾讯云物联网(IoT Hub):https://cloud.tencent.com/product/iothub
  • 腾讯云移动开发(移动开发平台):https://cloud.tencent.com/product/mmp
  • 腾讯云对象存储(COS):https://cloud.tencent.com/product/cos
  • 腾讯云区块链(BCBaaS):https://cloud.tencent.com/product/baas
  • 腾讯云虚拟专用网络(VPC):https://cloud.tencent.com/product/vpc
  • 腾讯云Web应用防火墙(WAF):https://cloud.tencent.com/product/waf
  • 腾讯云音视频处理(VOD):https://cloud.tencent.com/product/vod
  • 腾讯云元宇宙(Tencent XR):https://cloud.tencent.com/product/xr

以上是腾讯云提供的一些与云计算相关的产品,可以根据具体需求选择合适的产品进行部署和开发。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • Java虚拟机 G1 GC 调优解析

    依据官方 Java 虚拟机的规划,自 Java 9 开始,在实际的生产环境中不再建议使用基于 ConcurrentMarkSweep(CMS)垃圾收集器。根据 JEP-291,已做出此决定以减轻GC 代码库的维护负担并加速新开发。毕竟,Java 9 之后,G1 GC 已成为默认的 GC 算法。(当然,基于不同的环境,Z 垃圾收集器-ZGC 、Shenandoah GC 亦逐渐开始成为主流算法)因此,我们可以根据实际业务场景考虑将我们的应用程序移至该算法。它可能提供比 CMS GC 算法更优的性能特征。由于其参数相对较少,因此调整起来要容易得多。此外,G1 同时也提供了一些选项以从内存中消除重复的字符串,从而可以帮助我们应用减少总体内存占用。

    03

    G1垃圾收集器概述

    开始学习前,抛出两个常见面试问题:1.G1的回收原理是什么?为什么G1比传统的GC回收性能好?2.为什么G1如此完美仍然会有ZGC?简单的回顾下CMS垃圾回收机制,下面介绍了一个极端的场景(而且是经常发生的) 在发生Minor GC时,由于Survivor区已经放不下了,多出的对象只能提升(Promotion)到老年代。但是此时老年代因为空间碎片的缘故,会发生Concurrent mode failure的错误。这个时候,就需要降级为Serial Old垃圾回收器进行收集。这就是比concurrent mode failure 更加严重的promotion failed的问题。一个简单的Minor,竟然能演化成耗时最长的Full GC。最要命的是,这个停顿时间是不可预知的。有没有一种方法,能够首先定义一个停顿时间,然后反向推算收集内容呢?就像是领导在年初制定KPI一样,分配的任务多久多干些,任务少就少干点。类似需要徒步一段很长的路,然后在路中有多个里程碑,到达一个后可以休息一会。G1的思路说起来类似,它不要求每次都把垃圾清理的干干净净,只是努力做它认为对的事情。我们要求G1,在任意1秒的时间内,停顿不得超过10ms,这就是在给它制定KPI。G1会尽量达成这个目标,它能够推算出本次要收集的大体区域,以增量的方式完成收集。这也是使用G1垃圾回收器不得不设置的一个参数:-XX:MaxGCPauseMilis=10

    02
    领券