内存优化要点

2019-08-01  本文已影响0人  wind_sky

手机的内存(RAM,Random-access memory)是宝贵的,如果应用运行消耗大量内存,可能还会导致OOM 问题,所以优化应用的运行内存是每一个应用都应该进行的工作。

本篇主要记录优化应用内存的一些要点。

1. 谨慎地使用Service

避免在不必要的情况下,在后台一直运行一个Service,如果确实需要一个后台job ,可以考虑使用JobScheduler 来代替。

2. 使用更优化的数据结构

例如,当key 为int、long 等基本类型时,可以使用SparseArray 系列来代替HashMap,将会使内存的使用得到减少。

3. 注意代码抽象

开发人员经常将抽象简单地用作良好的编程实践,因为抽象可以提高代码的灵活性,便于维护。但是,抽象的成本很高:通常它们需要更多的代码才能执行,需要更多的时间和更多的RAM才能将代码映射到内存中。因此,如果抽象没有提供显着的好处,就无需使用。

4. 可以使用nano protobuf 来做数据的序列化

Protocol buffers 是谷歌开发的用于序列化、结构化数据的,类似XML,但是要更小、更快,但是如果决定要使用protobuf 的话,在客户端应该使用nano protobuf,因为普通的protobuf 会产生大量额外的代码,会增加内存使用。

5. 避免内存抖动

无论是ART 还是Dalvik VM,都有垃圾收集器,一次GC 对于应用的表现并没有很大影响,但是短时间内频繁的GC 会造成卡顿等现象,这种短期内的频繁GC 会造成内存抖动。

一般出现这种情况的场景是,在for 循环中创建大量的临时对象,或者在View 的onDraw 方法中创建大的对象比如Paint、Bitmap 等。

6. 谨慎地使用内存密集型的资源或类库

一些很大的资源文件或者类库在加载或运行时都会增加内存的使用。

7. 谨慎地使用静态变量

静态变量的生命周期和应用是一样长的,静态变量持有的资源越多,占用的内存就会更大。

上一篇下一篇

猜你喜欢

热点阅读