【问题标题】:How to properly dispose objects in Flambe?如何正确处理 Flambe 中的对象?
【发布时间】:2016-07-06 01:23:35
【问题描述】:

this Flambe guide 中写道:

“这个 dispose 函数会从它拥有的实体中移除这个组件。你应该重写 dispose-function 以便自己 dispose 对象,以防止内存泄漏。”

我有 3 个问题:

  1. 我应该如何覆盖 dispose 函数?

  2. 如何正确使用dispose函数?

  3. 有没有办法在 Flambe 中检查内存泄漏?

【问题讨论】:

    标签: memory-leaks garbage-collection dispose haxe flambe


    【解决方案1】:

    1 如果您使用的是Component

     override public function dispose() {
       myReferences = null;
       myDisposable.dispose();
    
       super.dispose();
     }
    

    如果您不使用Component: 您可以实现 Disposable 并在需要时在另一个 dispose 函数中进行 dispose。

    2 您需要清除对对象的引用,这意味着将其设置为 null。 您需要关闭在该上下文中创建的信号连接。 您需要处置Disposables。

    3 如果使用 JavaScript (html) 目标,则可以使用 chrome 调试检查器/devtools。您可以收集内存配置文件,观察 cpu 使用情况等。真的很有用! https://developer.chrome.com/devtools/docs/profiles

    【讨论】:

    • 感谢您的回答。只是几个问题:当您写myReferences 时,您的意思是对这个组件对象的引用,对吧? myDisposable 是什么?我们调用super.dispose() 是为了从它的所有者那里移除这个组件,对吧?
    • myDisposable 是您的组件中使用的任何实现Disposable 接口的东西。 myReference 是您的组件中使用的未实现 Disposable 的对象的另一个示例。
    • 是的,您应该始终使用super.dispose(),因为这会将组件从其所有者那里移除。
    • 为方便起见,您还可以在组件中使用Disposer,向其中添加任何Disposable(如信号等)并在覆盖dispose函数时执行myDisposer.dispose()
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多