android APP性能优化之内存优化

APP内存优化方法

1.数据结构优化

2.对象复用

3.避免内存泄漏

数据结构优化

1.频繁地使用字符串拼接不要用“+”的方式,应该使用StringBuilder,“+”的方式会产生无用的中间变量,而且难以删除

2.ArrayMap和SparseArray替换HashMap

HashMap效率较低,内存占用较高,使用前两者能解决这种问题。HashMap中的一个entry需要额外占用32B

3.内存抖动

length=200000;


由于length比较大,每次new String[length]时,都会占用比较大的新生代空间,很有可能此时新生代空间满了,所以,会进行Minor GC(其他线程在此时处于停止状态),并且这回出现多次。APP运行效率降低。

如何解决?

直接将上面这行语句放在循环外面就行。


在android Monitor中可以看到这样的内存锯型图

对象复用

1.复用系统自带的资源

比如使用Application Context而不用 Activity Context(后面有讲到)

2.ListView/GridView的ConvertView复用

3.避免在onDraw方法里面执行对象的创建

内存泄漏

内存泄漏:由于代码瑕疵,导致这块内存,虽然是停止不用了,但依然被其它东西占用着,使GC没办法对它回收。



打开这个线程的Activity,然后退出,再打开,在退出,重复操作,你会发现这个activity占用内存越来越大。




不断的重复,并且点击GC后,你会发现110这个数据一直在变大。

为甚么?我们在关闭这个activity时,由于这个线程睡眠了5分钟,所以它在关闭后还会存在,系统没办法对它进行回收。当再次打开这个activity时,上面一个activity就会成为内存泄漏的罪魁祸首。

从上面可以看出,Activity是很容易发生泄漏的

所以对于程序来说,用Application Context而不用Activity Context。

还有一点。要注意Cursor对象是否及时关闭,没有关闭的话,也容易出现内存泄漏。

猜你喜欢

转载自blog.csdn.net/Cdaimadada/article/details/80222796