【问题标题】:Memory leaks found when Local Binder has a reference to ServiceLocal Binder 引用 Service 时发现内存泄漏
【发布时间】:2011-07-18 13:21:47
【问题描述】:

我使用非静态内部类作为我所有服务的活页夹。但是,当我运行 MAT 工具检查内存泄漏时,我发现我所有的活页夹类都不清楚。所以我找到了与这个问题相关的以下两个链接。

http://code.google.com/p/android/issues/detail?id=6426

以下链接为解决此问题提供了一种解决方法:使用弱茶点 http://www.ozdroid.com/#!BLOG/2010/12/19/How_to_make_a_local_Service_and_bind_to_it_in_Android

  1. 由于这是当前版本的 android SDK 的一个已知问题,是否知道何时修复?

2.上面提供的解决方案是标准推荐的方法吗?或者有什么解决方法可以解决。

3 除此以外,使用活页夹模式时会引入什么样的内存泄漏。

山姆

我使用的是 Android SDK 2.2。

【问题讨论】:

    标签: android


    【解决方案1】:

    当您通过 Binder 将回调对象传递给服务时,我发现了类似的泄漏问题:Binder preventing garbage collection

    我相信,当您绑定到服务时,ServiceConnection 对象可能在您取消绑定之前不会被收集。因此,理想情况下,您的 ServiceConnection 不应持有任何消耗大量内存的东西,或者您可能希望在连接进行时收集垃圾的东西。这意味着非静态内部类可能不是一个好主意,因为非静态内部类有一个指向其父级的指针,这意味着在连接关闭之前不会对父级进行垃圾回收。

    我不认为这是可以真正解决的问题,只要有连接,就必须保持 ServiceConnection 对象处于活动状态,我们用户工程师只需要小心可能会产生哪些副作用有。

    【讨论】:

      猜你喜欢
      • 2018-08-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-20
      • 2010-12-15
      • 1970-01-01
      • 2011-03-25
      • 2013-11-18
      相关资源
      最近更新 更多