1.Record Java/Kotlin allocations
查看java 层中对象的调用栈和短时间内创建对象的次数。可用于内存抖动快速分析,可用快速查找到该对象的调用栈(等同于mat)

从上图可见,短时间内创建了23个char[] 数组,其中最大的char[] 占用20k, 查看cll stack 调用栈,发现其是被CheckAppProcessTask 中某个方法内所创建导致。
2.Capture heap dump
用于获取到当前的内存快照,查看当前进程app的内存状况,可用于分析java层和native层的内存占用情况

因上图0Leaks ,因此没有Activity/fragment内存泄漏,这里不展开介绍。
接下来分析,内存中如何查看内存占用情况,调用栈等问题。
排查大内存对象占用
比如从上图可见java层内存占用较前的对象:协程中CoroutineScheduler, 占用内存8M。
接着查看下,具体哪些对象导致占用:

经过查看,原来是协程某个版本中CoroutineScheduler,会创建一个8M的array

文章介绍了如何通过RecordJava/Kotlinallocations追踪对象创建,以及Captureheapdump获取内存快照来分析内存占用。重点讨论了协程中的CoroutineScheduler大内存问题和Bitmap的持有情况,强调了需要结合业务场景分析内存使用合理性,避免内存泄漏和大对象占用。
2654

被折叠的 条评论
为什么被折叠?



