【问题标题】:How can you make sure Callback.dispose gets called?你如何确保 Callback.dispose 被调用?
【发布时间】:2013-02-05 19:00:51
【问题描述】:

我正在查看 js-interop 库 (http://www.dartlang.org/articles/js-dart-interop/) 和 (http://dart-lang.github.com/js-interop/docs/js/Callback.html)。我想使用new Callback.many 设置多重触发回调。它说我必须确保调用dispose() 否则我可能会出现内存泄漏。确保在我的页面卸载时调用 dispose() 的最佳方法是什么?

【问题讨论】:

  • 我向 js-interop 作者发送了电子邮件。

标签: dart


【解决方案1】:

当您的页面被卸载时,您实际上并不需要显式地处理 Callback。浏览器应该将它们作为页面中使用的其他 javascript 变量进行清理。

当您知道Callback 将不再使用时,应使用dispose()。这就像删除对未使用对象的引用以允许对其进行垃圾回收。

从技术上讲,所有回调都在 Map 中引用,以允许 js 和 dart 之间进行通信。因此,即使您的代码不保留回调的引用,它也不会被垃圾收集。调用 dispose() 将删除该引用并使回调免费被垃圾回收。

【讨论】:

    猜你喜欢
    • 2018-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-09
    • 1970-01-01
    • 1970-01-01
    • 2017-09-03
    • 2021-12-08
    相关资源
    最近更新 更多