随机存取存储器(RAM)
在任何软件开发环境中都是非常有价值的资源,但对于物理内存经常受到限制的移动操作系统来说,它更有价值。 尽管Android运行时(ART
)和Dalvik虚拟机
都执行常规垃圾收集,但这并不意味着您可以忽略应用程序分配和释放内存的时间和位置。 您仍然需要避免引入内存泄漏,通常由静态成员变量中的对象引用引起,并在生命周期回调定义的适当时间释放任何引用对象。
本页面介绍了如何主动减少应用程序中的内存使用量。 有关Android操作系统如何管理内存的信息,请参阅Android内存管理概述
本篇文章主要介绍 Android
开发中的部分知识点,通过阅读本篇文章,您将收获以下内容:
监视可用内存和内存使用情况
为响应事件释放内存
分析检查你的app需要用多少内存
使用内存优化框架
移除内存密集型资源,以及lib库
希望看到这里的您 有任何需要都可以私信我哦
1. 监视可用内存和内存使用情况
在修复解决APP
中的内存使用问题之前,首先需要找到它们。 Android Studio
中的内存分析器Memory Profiler
可以帮助您通过以下方式查找和诊断内存问题:
-
1 . 看看你的应用程序随着时间的推移如何分配内存。
Memory Profiler
显示了一个实时图,显示您的应用程序使用了多少内存,分配了Java
对象的数量以及何时发生垃圾回收。
-
-
启动垃圾收集事件并在运行应用程序时抓取Java堆的快照。
-
-
-
记录您的应用程序的内存分配
-
然后检查所有分配的对象,查看每个分配的堆栈跟踪,然后跳转到Android Studio
编辑器中的相应代码。
如Android内存管理概述中所述。
2. 为响应事件释放内存
Android可以通过多种方式从您的应用程序中回收内存,或者在必要时将应用程序彻底关闭以释放内存以用于关键任务。 为了进一步帮助平衡系统内存,避免系统需要终止应用程序进程,可以在Activity
类中实现ComponentCallbacks2
接口。 提供的onTrimMemory()
回调方法允许您的应用程序在您的应用程序处于前台或后台时侦听与内存相关的事件,然后释放对象以响应应用程序生命周期或指示系统需要回收内存的系统事件。
例如,您可以实现onTrimMemory()
回调以响应不同的内存相关事件,如下所示:
import android.content.ComponentCallbacks2;// Other import statements ...public class MainActivity extends AppCompatActivity
implements ComponentCal