插件概览
WeakMap 是一个 Dart 包,实现了使用弱引用键的映射,当没有其他引用存在时,允许对键对象进行垃圾回收。它通过防止内存泄漏来实现高效的内存管理。WeakContainer 提供对象的身份检查,确保它们与之前是同一个实例。该包通过使用弱引用支持缓存函数的备忘录化,非常适合临时数据存储。专为长时间运行的应用程序设计,兼顾性能和安全性。
适合场景
- 带自动清理的记忆化
- 跟踪对象身份而不泄露
- 缓存与临时对象相关的结果
- 避免回调中的内存泄漏
- 按实例存储元数据
- 临时状态管理
主要特点
- 弱引用键
- 可垃圾回收的条目
- 基于身份的对象检查
- 内置的 memoization 工具
- 跨平台支持
- 轻便且快速
适合对象
- 长时间运行的应用程序,频繁创建对象
- 内存敏感的应用程序
- 需要实例特定数据的插件
- 开发人员避免强引用循环
- 需要临时数据存储的用例
- 高性能缓存
使用建议
- 密钥可能会意外收集
- 不适用于持久数据
- 无直接迭代或大小访问
- 限制为对象键存储
- 在异步上下文中需要谨慎处理
- 最好与瞬态或短期对象一起使用