Android我的应用程序是否有内存泄漏?

时间:2015-02-18 22:55:09

标签: android memory-management android-studio

我正在查看android studio中的内存使用情况并注意到每次启动我的应用程序时,内存都会增加几MB。我从来没有从任何支持的设备获得OutOfMemory异常崩溃报告。我不熟悉android sdk中包含的很多工具,所以我不确定这是否意味着内存泄漏。

在android studio内存监视器中,这是3次启动后的图形: memory monitor

正如您所看到的,每次启动时内存会增加几MB。

这是否意味着我有内存泄漏? 如果是这样,我可以采取哪些步骤来找到内存泄漏的来源?

1 个答案:

答案 0 :(得分:2)

要确保您的应用没有内存泄漏,您需要做两件事:

  1. 进行堆转储。
  2. 使用一些内存分析器进行分析。
  3. official documentation中描述了获取堆转储的方法 一旦你有转储,你可以将它加载到内存分析器工具(我更喜欢YourKit,但你可以选择你喜欢的任何分析器)并寻找泄漏的对象(可以在所选内存分析器的文档)。

    简单YourKit工作流:启动分析器,通过 Ctrl + O 打开堆转储。您将看到与下面相似的屏幕:

    enter image description here

    单击左侧的Inspections按钮,然后单击 Alt + A (或Run All按钮)。您感兴趣的检查Objects retained by inner class back references包含在Possible leaks组中。这里我只有String个对象,可以认为是正常的。每当你在这里看到你自己的一些类时,你就会发生内存泄漏。您可以单击您的对象(如果您在此处列出它们),以查看它具有哪些引用以及谁引用它以了解泄漏源的内容。