Android 内存管理问题

Android Memory Management issues

我正在开发我的第一个 android 应用程序,这是一个很大的应用程序。我已经完成了一半的应用程序,但让我担心的是应用程序使用的内存。最初我遇到有关内存不足异常的问题。我首先开始使用 Android Studio 的 MAT(内存分析器工具)分析我的应用程序,这很难跟踪内存使用情况。我的应用程序将达到分配 space 的 96mb 和崩溃.. 然后在互联网上阅读后我使用了 Leak Canary 它指出了消耗内存的静态资源.. 现在我的应用程序定期收集垃圾但我仍然发现分配的 space 仍然是大约 70 mb,就像我的应用程序开始分配 30mb,当我使用应用程序大约 2 分钟并返回初始屏幕时,分配的 space 与初始屏幕不同...对于像我这样的初学者来说很难追踪使用 MAT 对核心的内存使用情况,有没有最好的方法或工具可以让我清楚地了解对象分配的 space .. O正在占用最大值 space.. 应该被销毁但未被销毁的对象?并保留图像内存等提前致谢

主要'memory leakers'之一是位图。有时,当您在视图中加载图像时,它会在操作中使用大量内存。我曾经推荐使用像 Glide 或 Fresco 这样的库,它们可以更好地处理内存问题并且已经实现了许多常见功能。

您也可以尝试在 onDestroy 方法中为每个 activity 释放资源。

不过,如果您能更深入地了解您的项目,我将非常高兴。

问候。

这里有一些与内存管理相关的 post。

在某些时候我们都是新手,幸运的是,像这样的经验和问题被证明是非常好的'teachers'。
就像我在另一个 post 中所说的:

This will of course cause memory problems such as leaks, OOM and unnecessary resource binding. There is absolutely no automatic way to free up memory. You can not, under any circumstances, rely solely on the Garbage Collector

基本上,您必须确保只分配所需的资源,并在您知道在生命周期

内不再需要它们时立即释放它们

我已经用代码(你可以在你的项目中实现)写了更详细的解释来处理你的内存问题,可以在这里找到:

此致,