赞
踩
WebView
只要使用一次,内存就不会被释放,所以WebView
都存在内存泄漏的问题,通常的解决办法是为WebView
单开一个进程,使用AIDL
进行通信,根据业务需求在合适的时机释放掉
如Cursor,File等,内部往往都使用了缓冲,会造成内存泄漏,一定要确保关闭它并将引用置为null
集合用于保存对象,如果集合越来越大,不进行合理的清理,尤其是入股集合是静态的
bitmap是比较占内存的,所以一定要在不使用的时候及时进行清理,避免静态变量持有大的bitmap对象
很多需要register
和unregister
的系统服务要在合适的时候进行unregister
,手动添加的listener也需要及时移除
1).使用更加轻量的数据结构:
如使用ArrayMap
/SparseArray
替代HashMap
,HashMap
《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》
更耗内存,因为它需要额外的实例对象来记录Mapping操作,SparseArray
更加高效,因为它避免了Key Value的自动装箱,和装箱后的解箱操作
2.便面枚举的使用,可以用静态常量或者注解@IntDef
替代
3.Bitmap优化:
inBitmap
:使用inBitmap
属性可以告知Bitmap解码器去尝试使用已经存在的内存区域,新解码的Bitmap会尝试去使用之前那张Bitmap在Heap中所占据的pixel data内存区域,而不是去问内存重新申请一块区域来存放Bitmap。利用这种特性,即使是上千张的图片,也只会仅仅只需要占用屏幕所能够显示的图片数量的内存大小,但复用存在一些限制,具体体现在:在Android 4.4之前只能重用相同大小的Bitmap的内存,而Android 4.4及以后版本则只要后来的Bitmap比之前的小即可。使用inBitmap
参数前,每创建一个Bitmap对象都会分配一块内存供其使用,而使用了inBitmap
参数后,多个Bitmap可以复用一块内存,这样可以提高性能4.StringBuilder
替代String:
在有些时候,代码中会需要使用到大量的字符串拼接的操作,这种时候有必要考虑使用StringBuilder
来替代频繁的“+”
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。