使用弱引用颠覆控制

主要观点:弱引用很巧妙,JavaScript 中有WeakMapWeakRef两个 API 用于处理弱引用。WeakMap对键持有弱引用,WeakRef通过deref方法获取对象,其值可能在对象被垃圾回收后变为undefined。弱引用常用于避免内存泄漏,如在缓存中基于Transaction类进行缓存,不会因对象被回收而导致缓存持续增长。还可用于在无法控制的类中添加缓存语义,实现对程序控制的颠覆。同时探讨了利用弱引用跟踪其他状态的可能性,通过WeakMap创建类似扩展Transaction类的效果,使代码更具无缝性。

关键信息:

  • WeakMapWeakRef的介绍及使用方法。
  • 利用WeakMap在缓存中避免内存泄漏的示例。
  • 在无法控制的类中通过WeakMap添加缓存语义的方式。
  • 利用弱引用跟踪其他状态的简单示例。

重要细节:

  • WeakMapMap的区别在于对键的引用强弱。
  • WeakRefderef方法获取的对象可能在对象被垃圾回收后变为undefined
  • 在缓存中使用WeakMap可避免因对象回收导致缓存持续增长。
  • 通过WeakMap创建类似扩展类的效果时,对象的生命周期与Transaction类相关。
阅读 7
0 条评论