垃圾回收分为哪几类 - 智学轩城

垃圾回收分为哪几类

开叔苍头像

开叔苍

2026-05-02 11:54:54

  1. 主动回收
    • 主动清空内存,如Python的del操作。
      2. 被动回收
    • 系统自动回收,如Java的垃圾收集器。
      3. 引用计数
    • 每个对象记录引用数,当引用数为0时回收。
      4. 标记清除
    • 遍历所有对象,标记为可达的,不可达的回收。
      5. 分代回收
    • 根据对象存活时间分为新生代和老年代。
      6. 增量回收
    • 分时进行回收,减少对系统性能的影响。
      我自己也还在验证,但经验是这样。
印季翔头像

印季翔

2026-05-04 16:24:51

垃圾回收主要分为两类:自动垃圾回收和手动垃圾回收。其实很简单,这事复杂在很多人搞不清它们的区别。
先说最重要的,自动垃圾回收是现代编程语言中常见的一种机制,比如Java和C#等。它通过自动追踪对象的引用,来判断对象是否被使用,未被使用的对象就会被回收。去年我们跑的那个项目,大概3000量级,使用Java时,自动垃圾回收大大减少了开发人员的负担。
另外一点,手动垃圾回收则是在如C++这样的语言中常见,开发者需要显式地释放不再使用的资源。我记得有一次,我在处理一个老旧的系统时,发现如果不手动释放内存,程序运行一段时间后就会变得非常卡顿。
我一开始也以为自动垃圾回收就能解决所有问题,后来发现不对,手动垃圾回收在某些情况下还是很有必要的。等等,还有个事,比如在嵌入式系统中,内存资源有限,手动管理内存可以更加精细。
最后提醒一个容易踩的坑,就是过度依赖自动垃圾回收,可能会导致内存泄漏,因为垃圾回收器并不能总是准确判断对象的生命周期。所以,在设计和开发时,了解不同垃圾回收机制的特点和适用场景非常重要。