我正在查看android studio中的内存使用情况并注意到每次启动我的应用程序时,内存都会增加几MB。我从来没有从任何支持的设备获得OutOfMemory异常崩溃报告。我不熟悉android sdk中包含的很多工具,所以我不确定这是否意味着内存泄漏。
在android studio内存监视器中,这是3次启动后的图形:
正如您所看到的,每次启动时内存会增加几MB。
这是否意味着我有内存泄漏? 如果是这样,我可以采取哪些步骤来找到内存泄漏的来源?
答案 0 :(得分:2)
要确保您的应用没有内存泄漏,您需要做两件事:
official documentation中描述了获取堆转储的方法
一旦你有转储,你可以将它加载到内存分析器工具(我更喜欢YourKit
,但你可以选择你喜欢的任何分析器)并寻找泄漏的对象(可以在所选内存分析器的文档)。
简单YourKit
工作流:启动分析器,通过 Ctrl + O 打开堆转储。您将看到与下面相似的屏幕:
单击左侧的Inspections
按钮,然后单击 Alt + A (或Run All
按钮)。您感兴趣的检查Objects retained by inner class back references
包含在Possible leaks
组中。这里我只有String
个对象,可以认为是正常的。每当你在这里看到你自己的一些类时,你就会发生内存泄漏。您可以单击您的对象(如果您在此处列出它们),以查看它具有哪些引用以及谁引用它以了解泄漏源的内容。