内存优化主要有两个部分:1是架构,这里包括设备分级,缓存管理,进程管理与Bitmap图片库的策略。2是监控,因为大部分的问题特别是内存泄漏,oom。更多的时候难点不在于解决而在于如何发现他们。
第一架构部分我们一般从设备分级,缓存管理,进程模型,安装包大小,Bitmap优化和内存泄漏这三个方面入手。
1,设备分级。使用类似device-year-class的策略对设备进行分级,对于低端机可以采取关闭动画,或者某些功能,使用565格式的图片,使用更小的缓存内存等。
2,缓存管理。我们需要一个统一的缓存管理机制,可以在适当的时候使用内存。当系统有难时可以义不容辞的归还。
3,进程模型。一个空进程也要占用10兆内存,所以减少启动应用的进程数,减少常驻进程,对内存优化很重要。
4,安装包大小。安装包中的代码,资源,SO包库的体积,跟他们占用的内存有很大的关系。我们需要针对低端机开发相应的轻量级包,一些不需要初始化就使用的资源,SO包可以通过下载来获取。
5,Bitmap优化。Bitmap内存一般占用应用很大一块,所以做内存优化永远无法避开图片内存这个“永恒主题”。一般有两种方法:一是统一图片库。二是统一监控,监控有三点:大图片监控,重复图片监控,图片总内存。
6,内存泄漏。内存泄漏简单来说就是没有回收不在使用的内存,排查和解决内存泄漏也是内存优化无法避开的工作之一。Java内存泄漏建立LeakCanary自动化监测方案,至少做到Activity,fragment的泄漏监测。
7,内存监控。
8,GC监控。
网友评论