手机屏幕下方一直在抖怎么办,手机屏幕一直按着就会抖

首页 > 经验 > 作者:YD1662022-11-01 22:53:06

内存抖动概念

在程序里,每创建一个对象,就会有一块内存分配给它;每分配一块内存,程序的可用内存也就少一块;当程序被占用的内存达到一定临界程度,GC 也就是垃圾回收器(Garbage Collector)就会出动,来释放掉一部分不再被使用的内存。

Android 里的 View.onDraw() 方法在每次需要重绘的时候都会被调用,这就意味着,如果你在 onDraw() 里写了创建对象的代码,在界面频繁刷新的时候,你就也会频繁创建出一大批只被使用一次的对象,这就会导致内存占用的迅速攀升;然后很快,可能就会触发 GC 的回收动作,也就是这些被你创建出来的对象被 GC 回收掉。

[垃圾内存]太多了就被清理掉,这是 Java 的工作机制,这不是问题。问题在于,频繁创建这些对象会造成内存不断地攀升,在刚回收了之后又迅速涨起来,那么紧接着就是又一次的回收,对吧?这么往复下来,最终导致一种循环,一种在短时间内反复地发生内存增长和回收的循环。 这种循环往复的状态就像是水波纹的颤动一样,它的专业称呼叫做 Memory Churn,Android 的官方文档里把它翻译做了内存抖动。

简单来说就是: 在程序需要对象的时候,在堆当中分配出来一块空间,使用完毕以后, GC 帮我们清理掉这片内存空间,如果频繁的一直持续上述操作,就会引起内存抖动。

内存抖动原因分析

Android Studio提供了一个 profile的工具,可以帮助我们分析内存情况,在studio的上不有一个表盘的图标

手机屏幕下方一直在抖怎么办,手机屏幕一直按着就会抖(1)

点击红框图标,然后就会运行当前项目,选中连接的手机,然后在studio的底部就会出现一个Android Profile的工具项(如下图)。

手机屏幕下方一直在抖怎么办,手机屏幕一直按着就会抖(2)

我们会看到有CPU,MEMORY,NETWORK三个选项,我们要监控的是内存,所以点击MEMORY,会进入下图

手机屏幕下方一直在抖怎么办,手机屏幕一直按着就会抖(3)

在这张图中我们可以看到我们当前应用所占的内存total,我们这里重点说一下左上角的三个按钮分别是:

首先我们调用GC是当前内存处于稳定状态,然后点击红色按钮开始记录内存状况,然后我们开始在手机上进行操作(一般这个时候会发现平稳的曲线开始波动),然后我们点击停止按钮,回出现下图的情况。

手机屏幕下方一直在抖怎么办,手机屏幕一直按着就会抖(4)

首页 12下一页

栏目热文

文档排行

本站推荐

Copyright © 2018 - 2021 www.yd166.com., All Rights Reserved.