#arc #sync #data-structures #free-memory #weak-references

provenant

一种可以跟踪来源以在存在弱指针时释放内存的 Arc 版本。

2 个版本

0.1.1 2021 年 4 月 13 日
0.1.0 2021 年 4 月 13 日

#932并发

MIT 许可证

9KB
149

provenant

这是 Arc<T>Weak<T> 的一个版本,它能够在所有 Arc 都被丢弃后立即释放内存,即使 Weak 引用仍然存在。

特性

  • 最后一个 Arc 被丢弃时释放内存
  • WeakCopy

魔法

它在运行时通过概率性地跟踪来源来实现。

  • 初始化时,指向的内存获得一个随机 ID。
  • 弱指针获得该 ID 的一个副本。
  • 如果 ID 不匹配,弱指针将无法升级。

其思路是,如果弱指针的 ID 与内存的 ID 不匹配,它一定已经被丢弃。它要么是从丢弃中清零的,要么现在里面有了其他东西。

⚠️

如果后端内存被用于其他用途,并且巧合地具有相同的 ID 位模式,则弱指针可能会得到一个假阳性。祝你好运 :)

依赖项

~315KB