【问题标题】:Can we get a memory leak even if the app is killed?即使应用程序被杀死,我们也会出现内存泄漏吗?
【发布时间】:2015-07-07 12:04:12
【问题描述】:

我看不懂Activity.onStop()的这句话:

当您的活动收到对 onStop() 方法的调用时,它不是 更长的可见性并且应该释放几乎所有不可见的资源 用户不使用时需要。一旦你的活动停止, 如果需要恢复系统,系统可能会破坏实例 记忆。在极端情况下,系统可能会简单地杀死您的应用程序 进程不调用活动的最终 onDestroy() 回调,所以 使用 onStop() 释放可能泄漏的资源很重要 记忆。

具体这部分:

在极端情况下,系统可能会简单地杀死您的应用进程 没有调用活动的最终 onDestroy() 回调,所以它是 重要的是你使用 onStop() 来释放可能泄漏内存的资源

如果进程被杀死,如果onStop 中没有发布代码,我们怎么会出现内存泄漏?在应用程序终止时,所有资源都被清理了对吗?

【问题讨论】:

    标签: java android android-activity memory-leaks


    【解决方案1】:

    如果进程被杀死,如果我们在 onStop 中没有发布代码,我们怎么会发生内存泄漏?

    你不能。 Android 文档出了问题,哟。

    在应用程序终止时,所有资源都被清理了对吗?

    好吧,您的进程已终止,这消除了您的 RAM 和线程。您需要做的是安排清理所有绑定到您的 RAM 和线程的东西。例如,如果用户已将数据输入到您想要保留但尚未持久化的应用程序中,onStop() 是考虑派生线程以将这些内容保存到磁盘的候选时间。

    【讨论】:

    • 是的,我了解保存东西。我无法理解我们如何获得文档中描述的内存泄漏
    • Android 大量使用进程之间的通信,理论上,other 进程中代表死去的进程持有的资源可能无法被如果这些程序写得不够好来处理它的意外消失,它会在它死后被释放。例如,有关于相机问题的传言。
    • @ChrisStratton:我同意这是潜在的问题。但是,恕我直言,它不符合文档的描述,因为活动生命周期材料并未涉及其他流程。我对我的回答进行了轻微修改,将您的 IPC 场景与您可能需要在流程之外解决的其他事情混为一谈。感谢您指出这一点!
    【解决方案2】:

    如果进程被杀死。所有相关的内存内容都将从系统中删除,因此终止进程不会泄漏内存。

    【讨论】:

      猜你喜欢
      • 2019-01-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多