news 2026/5/1 17:28:01

什么是GC?GC的算法有哪些?一文详解

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
什么是GC?GC的算法有哪些?一文详解

一.GC详解

1.概念

GC就是“垃圾回收”,是Java的特性。

2.怎么执行的?是手动?还是自动?

垃圾回收是自动执行的。

而手动的方式只能进行提醒操作,而不能进行垃圾回收。

3.该动作发生在JVM的哪片区域?只发生在堆

GC只发生在堆。(注意:方法区也属于堆的范畴)

原因:为什么栈不需要垃圾回收,堆需要垃圾回收?一文详解-CSDN博客

①堆分为哪些区?

  • 新生区(Young Generation)

一句话描述:它是新对象的“出生地”,绝大多数刚new出来的对象都会首先被分配到这里(注:它内部其实还包含 Eden 区和幸存区)。

  • 幸存区(Survivor Space)

一句话描述:它是新生区里的“缓冲带”,专门用来暂时存放那些经过垃圾回收后依然存活、但还没资格变老的对象。

  • 老年区(Old Generation)

一句话描述:它是长期存活对象的“归宿”,存放那些在幸存区熬过了多次回收依然没被清理掉的“长寿”对象。

②GC具体发生在堆的哪个区?

这三个区都会发生GC,但是频率不同。


  • 平时:GC 主要发生在新生区幸存区(此时进行的是轻GC(也叫普通GC)),快速清理垃圾,说白了就是没事勤快点简单打扫打扫,所以频率比较高。
  • 实在扛不住了:当对象太多,幸存区装不下,或者老年区满了,才会触发特别针对老年区的全面大扫除(此时进行的是重GC(全局GC))。注意:全局GC时的绝大部分都给了老年区,而新生区和幸存区也会打扫,但是占比比较少。所以才说“针对”老年区。

4.GC分为哪两种类型?

①轻GC(普通GC/Minor GC

指仅针对新生区和幸存区进行的快速回收,专门负责清理那些生命周期极短的“朝生暮死”对象。

②重GC(全局GC/Major or Full GC

指针对老年区(或包含新生区在内的整个堆内存)进行的全面回收,通常因老年代空间不足而触发,耗时较长且会导致程序暂停。

二.GC的算法有哪些?

1.引用计数法

①定义

这是一种非常直观的内存管理算法,它的核心思想是为每个对象维护一个“计数器”,用来实时记录当前有多少个引用正在指向该对象;每当有一个新引用指向它时,计数就加1,引用失效时计数就减1,一旦计数器归零,就意味着该对象不再被使用,可以立即被回收。

②举例

③使用频率

几乎不用

④优缺点

  • 优点:回收非常及时且没有长时间的停顿
  • 缺点:无法处理对象之间相互引用的“循环引用”问题(即两个对象互相引用但外部已不再访问),这会导致内存泄漏,因此主流的 Java 虚拟机并没有采用这种算法。

以上就是本篇文章的全部内容,喜欢的话可以留个免费的关注呦~~~

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/1 2:38:25

罗技为 MX 配件推新生产力插件,Easy Switch 功能改进让设备切换更便捷

MX 配件新生产力插件:拓展应用支持边界罗技为全系列 MX 配件推出新的生产力插件,其中 MX Creative Console 此前已通过插件扩展功能支持创意类应用,如今支持范围扩大到微软 Office、Slack 和 Notion 等生产力应用。用户借助 Actions Ring 菜单…

作者头像 李华
网站建设 2026/4/30 23:15:33

终极开源版图设计指南:用KLayout轻松搞定芯片设计

终极开源版图设计指南:用KLayout轻松搞定芯片设计 【免费下载链接】klayout KLayout Main Sources 项目地址: https://gitcode.com/gh_mirrors/kl/klayout 想要设计自己的芯片却苦于高昂的软件费用?KLayout开源版图工具为你打开芯片设计的大门&am…

作者头像 李华
网站建设 2026/4/29 15:46:46

【收藏级】2026程序员转型大模型指南:小白零门槛上手,抢占AI时代红利

在程序员的技术交流群、CSDN社区、职场分享会里,“转型”依然是2026年高频热议的核心话题。当大模型技术从“概念落地”走向“规模化应用”,彻底融入企业研发全流程、日常开发场景,一个不容置疑的趋势已然清晰:懂大模型、能落地大…

作者头像 李华
网站建设 2026/4/30 23:16:26

7-Zip完整使用指南:5个实用技巧让你成为文件压缩专家

7-Zip完整使用指南:5个实用技巧让你成为文件压缩专家 【免费下载链接】7z 7-Zip Official Chinese Simplified Repository (Homepage and 7z Extra package) 项目地址: https://gitcode.com/gh_mirrors/7z1/7z 7-Zip是一款完全免费的开源文件压缩软件&#x…

作者头像 李华
网站建设 2026/4/30 16:53:29

手把手教你用Python+Matplotlib绘制专业级专题地图(附代码与数据)

PythonMatplotlib实战:5种专题地图绘制技巧与设计原则 当你需要展示中国各省GDP差异、全球人口密度分布或是某城市商业网点热度时,静态表格远不如一张精心设计的地图直观。作为数据可视化领域的瑞士军刀,Python的Matplotlib库配合Geopandas等…

作者头像 李华