import MessageDispatcher from "./MessageDispatcher"; import ReferenceManager from "./ReferenceManager"; import MessageNode from "./"; /** * 垃圾回收 * * 不可序列化的对象, 进程的通信用了map, 实际上维护了一个引用, 会导致对象不能回收,引起内存泄露。 * 故需要管理垃圾回收, 回收的思路有几种 * 1. 主动回收 有部分额外的工作 * 2. WeakFactory https://github.com/tc39/proposal-weakrefs/blob/master/specs/spec.md, 但基本没有浏览器支持 * 3. 分类 * DOM: 用MutationObserver监听回收 * Global: 无需回收 * 非Global: Tranel API不能访问, 无需处理 * 闭包变量: 默认生存一个Tick, 下个Tick回收。 * * * 可能还有其它的方法 * 当前状态:实现1, * @class GarbageCollection */ export default class GarbageCollection { private readonly referenceManager; private messageDispatcher; private messageNode; constructor(referenceManager: ReferenceManager, messageDispatcher: MessageDispatcher, messageNode: MessageNode); wipe(obj: any): void; clearOtherwise(...otherwise: any[]): void; }