写点什么

垃圾回收是什么?

  • 2023-11-06
    上海
  • 本文字数:585 字

    阅读完需:约 2 分钟

什么是垃圾回收

垃圾回收指的是自动管理内存的过程。

在程序运行时,会动态分配内存给对象,用于存储数据,当这些对象不再需要时,需要回收其占用的内存以便重新使用,避免内存泄漏。

死亡的内存,也就是不可达的内存,会被标记为垃圾,并在回收过程中被清除,释放出的空间可以被再次利用。

垃圾回收算法

  1. 引用计数:一种简单的垃圾回收技术。为每个对象维护一个引用计数器,当引用计数器变为 0 时,对象占用的内存就会被回收;这种方法不能解决循环引用的问题。

  2. 标记-清楚(mark-sweep):这种算法分两个阶段运行。在标记阶段,GC 从根集合出发,便利所有的可达对象,并将他们标记为活动的。在清楚阶段,未必标记的对象,将被视为垃圾并回收其内存。

  3. 复制(copying):这种算法将可用内存分为两个半区,每次只使用其中一个。当进行垃圾回收时,会将活动的对象从当前的半区复制到另一个半区,然后一次性清楚当前半区的所有对象。

  4. 分代收集:大多数对象在内存中存活的时间都很短,基于这个假设,分代收集算法将对象按照其存活时间的长短分到不同的内存区域。新生代中的对象经常进行 GC,而老年代中的对象较少进行 GC。


垃圾回收机制在如 java、python 等高级语言中广泛采用,它使得程序员可以专注于业务逻辑的实现,而不用过多的关注内存管理。但是,GC 也有其缺点,比如可能会引入额外的性能开销,且不可预测的 GC 暂停时间可能会影响程序的响应时间,尤其是在对实时性要求较高的系统中。

用户头像

还未添加个人签名 2020-11-03 加入

还未添加个人简介

评论

发布
暂无评论
垃圾回收是什么?_垃圾回收_暂时不愿意透露姓名的热心人士_InfoQ写作社区