据我所知,每次收听事件时,都会创建一个新的StreamSubscription对象
element.onMouseMove.listen
我的问题是:什么时候将StreamSubscription对象从内存中释放出来?它会留在那里,直到我称之为 cancel()方法吗?或者是否足以删除StreamSubscription正在侦听的元素/对象? 什么时候我必须担心内存泄漏?
答案 0 :(得分:1)
当从DOM中删除元素并且没有'active'变量引用该元素时,垃圾收集器将释放元素的内存和StreamSubscription。
使用'active',我正在讨论一个由一个类保存的变量,该类不能被垃圾收集,因为类本身被引用。
如果元素长时间保存在DOM中,但听众来来去去,则应该在听众不再对事件感兴趣时订阅和取消订阅。
订阅:
StreamSubscription _moveSubscr = element.onMouseMove.listen(moveHandler);
取消订阅
if(_moveSubscr != null) _moveSubscr.cancel;