垃圾回收是什么?
什么是垃圾回收
垃圾回收指的是自动管理内存的过程。
在程序运行时,会动态分配内存给对象,用于存储数据,当这些对象不再需要时,需要回收其占用的内存以便重新使用,避免内存泄漏。
死亡的内存,也就是不可达的内存,会被标记为垃圾,并在回收过程中被清除,释放出的空间可以被再次利用。
垃圾回收算法
引用计数:一种简单的垃圾回收技术。为每个对象维护一个引用计数器,当引用计数器变为 0 时,对象占用的内存就会被回收;这种方法不能解决循环引用的问题。
标记-清楚(mark-sweep):这种算法分两个阶段运行。在标记阶段,GC 从根集合出发,便利所有的可达对象,并将他们标记为活动的。在清楚阶段,未必标记的对象,将被视为垃圾并回收其内存。
复制(copying):这种算法将可用内存分为两个半区,每次只使用其中一个。当进行垃圾回收时,会将活动的对象从当前的半区复制到另一个半区,然后一次性清楚当前半区的所有对象。
分代收集:大多数对象在内存中存活的时间都很短,基于这个假设,分代收集算法将对象按照其存活时间的长短分到不同的内存区域。新生代中的对象经常进行 GC,而老年代中的对象较少进行 GC。
垃圾回收机制在如 java、python 等高级语言中广泛采用,它使得程序员可以专注于业务逻辑的实现,而不用过多的关注内存管理。但是,GC 也有其缺点,比如可能会引入额外的性能开销,且不可预测的 GC 暂停时间可能会影响程序的响应时间,尤其是在对实时性要求较高的系统中。
评论