内存抖动解决实战

1、

内存抖动解决实战_第1张图片

2、

内存抖动解决实战_第2张图片

3、

内存抖动解决实战_第3张图片

4、

不同的工具有不同的使用场景。Memory Profiler使用非常直观,可用清晰地看到内存曲线。

内存抖动解决实战_第4张图片

5、

打开应用查看内存情况,此时此刻内存非常地平稳,y一直稳定在87.7M

内存抖动解决实战_第5张图片

 

进入到另一个页面后,可以看到界面呈锯齿状,可以初步判断出现了内存抖动,这种情况如果非常严重的话,也会导致卡顿,同时由于可用内存减少,可能导致OOM.此时,通过Memory Profiler发现了内存抖动的现象。怎么知道内存抖动真正发生在哪里呢?

内存抖动解决实战_第6张图片

6、如何判断内存抖动发生在哪里呢?

可以看到record这个按键,这个就是来记录内存的分配情况,点击后,等一会儿再点击stop

内存抖动解决实战_第7张图片

内存抖动解决实战_第8张图片

 

然后可以将内存分配情况显示出来,也就是说在刚刚那段时间内分配了如下这些对象

点击Allocations可以对对象数量进行排序。可以看到String数组有15720多个,在shallow size处可以看到占用的大小。

现在可以锁定一个目标,为什么string数组会有这么多?它可能会有问题。怎么排查是哪个地方导致的问题呢?

内存抖动解决实战_第9张图片

随便点击一个对象,可以在右下角看到对象的堆栈信息,也就是对象是在哪里进行分配的

内存抖动解决实战_第10张图片

 

点击右键,jump to source可以跳转到代码处

内存抖动解决实战_第11张图片

 

内存抖动解决实战_第12张图片

7、

内存抖动解决实战_第13张图片

8、

内存抖动解决实战_第14张图片

9、

内存抖动解决实战_第15张图片

你可能感兴趣的:(笔记,Android)