Android 内存优化3个方面入手

1.设备分级            

使用类似device-year-class的策略对设备分级,对于低端机用户可以关闭复杂的动画,或者是某些功能。    

2.Bitmap优化
    方法一:统一图片库   可以使用Glide,Picasso,Fresco,而且需要进一步将所有BitMap。createBitmap,BitmapFactory相关的接口也一并收拢
    方法二:统一监控
    1.大图片监控:监测某张图片内存占用是否过大,图片比列是否超过屏幕大小,出现图片的“超宽率”
    2.重复图片监控:Bitmap的像素数据一致,但是有很多不同的对象存在,这个监控不需要太多的样本量,一般在内部使用
    3.监控图片总内存:通过收拢图片使用,统计应用所有图片分析占用内存,在出现OOM崩溃的时候输出图片占用总内存,Top N图片内存日志,帮助排查问题


3.内存泄漏
    内存泄漏简单来说就是没有回收,排查和解决内存泄漏也是内存优化无法避开的工作之一
    
    内存泄漏主要分2种情况:1.同一个对象泄漏  2.每次泄漏一个新的对象,可能回出现很多个无用的对象
    
    监测方法:1.Java内存泄漏:建立类似LeakCanary自动化监测
    2.OOM监控:美团Android内存泄漏自动化链路分析组建Probe  暂时不成熟,可能引起二次崩溃
    3.针对无法重编so的情况
    4.针对可重编的情况
    
    内存监控
    通过监控拿到内存分配的次数和大小,以及GC发起的次数
    //6.0以前
    long allocCount=Debug.getGlobalAllocCount();
    long allocSize=Debug.getGlobaAllocSize();
    long gcCount=Debug.getGlobaGcInvocationCount();
    
    //6.0以后
    //运行GC的次数
    Debug。getRuntimeStat("art.gc.gc-count");
    //GC 使用的总耗时  单位毫秒
    Debug.getRunTimeStat("art.gc.gc-time");
    //阻塞式的次数
    Debug.getRunTimeStat("art.gc.blocking-gc-count");
    //阻塞式GC总耗时
    Debug.getRunTimeStat("art.gc.blocking-gc-time");

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值