#cc #垃圾 #清理 #标记 #gc #对象

auto-cc

一个用于执行自动循环收集的实用程序 bacon_rajan_cc

2个不稳定版本

0.2.0 2019年12月28日
0.1.0 2019年12月26日

#730 in 内存管理

MIT 许可证

7KB
62

auto-cc

当需要时,在 bacon_rajan_cc 对象上执行自动循环收集的小实用程序。

这适用于无法或难以精确控制数据结构形状的场景,以及大量循环可能在外部控制之外发生的情况,例如脚本语言实现的VM/解释器中的值。

检查和收集根的逻辑仅包含在 cc 函数中(按照惯例调用 Cc::new() 不会触发检查)。

应优先使用 Cc::new(),用于短生命周期的代码或不太可能创建循环的代码。

请注意,循环是在分配新的 Cc<T> 之前收集的,因此即使不可信的代码执行完毕后,仍然可能存在已死亡的循环,因此建议从 bacon_rajan_cc 包中手动调用 collect_cycles 函数以执行最终清理。

基本示例

extern crate auto_cc;

use auto_cc::{
    cc,
    
    bacon_rajan_cc::{
        Cc,

        collect_cycles, // for final cleanup, when necessary
    }
};

fn main() {
    let _x: Cc<u8> = cc( 0 );
}

依赖关系

~73KB