内存不断上升,却没有收到 leakcanary 的内存泄漏通知

Memory keeps rising without getting memory leak notification from leakcanary

我是 android Profiler 的新手,在内存管理方面仍然是菜鸟。起初,我收到了来自 LeakCanary 的通知,所以我修复了它们并成功消除了泄漏,因此 LeakCanary 停止向我发送通知。但是当我使用 android Profiler 时,我注意到当我打开某个 activity 然后使用 finish(); 方法销毁它时,内存使用量正在一点点上升。下面是我打开和关闭 OrdersActivity.

时 Profiler 的示例屏幕截图

这里是打开和关闭OrdersActivity之前使用的总内存的SS

这里是打开和关闭OrdersActivity后使用的总内存的SS

这里还有 LeakCanary 的堆栈跟踪

请问这种内存上升的现象是否正常?如果没有,有没有办法阻止这种情况?如果您需要它们以帮助我,我愿意展示我的代码。我只是因为它太长而没有包含它。

LeakCanary 将检测内存泄漏,即当 activity 关闭时仍保留在内存中的对象。

如果您想了解为什么 activity 是 运行 时内存使用量增加的原因,您可以 track allocations using the profile.

编辑:此外,很难阅读屏幕截图,但在我看来,当您启动 activity 时,它正在增加 code(代码:内存您的应用程序使用的代码和资源,例如 dex 字节码、优化或编译的 dex 代码、.so 库和字体。)在那种情况下,这是完全正常的:启动 activity 需要加载额外的代码(activity 本身,它可能很小,如果尚未加载,则需要加载所有必需的 AppCompat)。测试内存泄漏的通常策略是启动和关闭 activity 一百次,并验证在第 2 次和第 100 次之间没有内存增加。