谈一谈Android内存优化那些事(三)Android内存分析与监控

本文详细介绍了Android的内存分析与监控方法,包括查看GC日志、监控内存泄漏以及使用Profiler分析内存占用。同时提到了常见GC类型及其影响,以及面试中常被问及的内存管理知识。
摘要由CSDN通过智能技术生成

1.Android内存分配与回收机制
2.Android常用的内存优化方法
3.Android内存分析与监控

上两篇文章我们说完了内存分配与回收机制、内存优化的问题,那么事后的内存分析和监控是必不可少的了!下面我们就介绍一下内存分析与监控。

##Android内存分析与监控
Android内存分析和监控主要介绍如下四种方式:

  1. 查看GC日志
  2. 查看内存使用情况
  3. 通过LeakCanary监控内存 泄漏
  4. 线上监控

###1.查看GC日志

GC的类型:

Concurrent: 不会暂停应用线程的并发垃圾回收。此垃圾回收在后台线程中运行,而且不会阻止分配。

Alloc: 您的应用在堆已满时尝试分配内存引起的垃圾回收。在这种情况下分配线程中发生了垃圾回收。

Explicit:由应用明确请求的垃圾回收,例如,通过调用system.gc()。与 Dalvik 相同,在 ART 中,最佳做法是您应信任垃圾回收并避免请求显式垃圾回收(如果可能)。不建议使用显式垃圾回收,因为它们会阻止分配线程并不必要地浪费 CPU 周期。如果显式垃圾回收导致其他线程被抢占,那么它们也可能会导致卡顿(应用中出现间断、抖动或暂停)

NativeAlloc:原生分配(如位图或 RenderScript 分配对象)导致出现原生内存压力,进而引起的回收。

查看垃圾回收日志

在AndroidStudio Logcat过滤GC,然后操作App一段时间后会出现上图的GC内容:

垃圾回收原因+垃圾回收的名称+释放对象+释放对象大小+释放大型对象的大小+堆统计数据+暂停时间

LOS objects是前面所说到的Art虚拟机新增的

着重关注最后面的暂停时间,超过16ms会影响界面,一般大于700ms会影响体验,Android Vitals 将连续丢帧超过 700 毫秒定义为冻帧,也就是42帧

2.查看内存使用情况

通过查看内存使用情况来分析App的内存占用是非常必要的,下面分别介绍如下两种方式:

  1. adb shell
  2. Profiler
查看内存使用情况

详细的使用请参考AndroidDeveloper调查RAM使用情况

使用Profiler分析内存

AndroidStudio的Profiler功能越来越强大,不仅集成了内存分析,还有电量、CPU、网络等数据的分析。

最后

一线互联网Android面试题含详解(初级到高级专题)

这些题目是今年群友去腾讯、百度、小米、乐视、美团、58、猎豹、360、新浪、搜狐等一线互联网公司面试被问到的题目。并且大多数都整理了答案,熟悉这些知识点会大大增加通过前两轮技术面试的几率

如果设置门槛,很多开发者朋友会因此错过这套高级架构资料,错过提升成为架构师的可能。这就失去了我们的初衷;让更多人都能通过高效高质量的学习,提升自己的技术和格局,升职加薪。

最后送给大家一句话,望共勉,永远不要放弃自己的梦想和追求;

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值