当前位置:首页 > 经验 >

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

来源:原点资讯(www.yd166.com)时间:2022-11-01 22:53:06作者:YD166手机阅读>>

框框内是我们当前记录的操作区间,当我们点击停止按钮的时候, 在Class Name这个框内,会生成当前记录区间(操作过程)的堆信息。

我们发现我们的曲线有一个向上的陡坡,说明我们的操作造成了大量的内存分配,通过下面堆信息我们来找一下是什么造成了大量的内存分配。

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

我们发现堆信息是从大到小排列的,而第一条是系统的imageView,明显这里有问题,点击进去发现有大量的imageView对象,点击其中的一个,右下角的框框会显示该对象的具体位置信息。至此我们找到了造成内存抖动的罪魁祸首,

当然,这里的内存抖动是我人为加上去的,比较明显,但是原理是一样的。

内存抖动方案解决1.集合类

集合类如果仅仅有添加元素的机制,而没有相应删除元素机制,这样就会造成内存被占用,如果这个类是全局性变量(比如类中有静态属性,全局性的map等即有静态引用或final一直指向它)。那么没有相应删除机制,很可能导致集合所占内存只增不减。 解决办法:在使用集合类时,增加删除元素机制,并适当调用减少集合所占内存。

2.单例模式

不正确使用单例模式,也会引起内存泄漏单例对象在初始化后将在JVM的整个生命周期存在(以静态变量方式),如果单例对象持有外部对象的引用,那么这个外部对象就会一直占用着内存,可能导致内存泄漏(取决于这外部对象是否一致有用)。 解决办法:单例对象中避免含有不是一直都有用的外部对象引用。

3.Android组件或特殊集合对象的使用

BraodcastReceiver ,ContentObserver,fileObserver,Cursor,Callback等在Activity onDestory或者某类生命周期结束之后一定要unregistere或者close掉,否则这个Activity类会被system强引用,不会被回收。不要直接对Activity进行直接引用作为成员变量,如果不得不这么做,调用private WeakPeferense mActivity 来做,相同的,对与Service等其他有自己生命周期的对象来说,直接引用都需要考虑是否会存在内存泄露的可能。

4.Handler

要知道,只要Handler 发送的Message尚未被处理,则该Message及发送它的Handler对象将被线程MessageQueue一直持有。由于Handler属于TLS(Thread Local Storage)变量,生命周期和Activity是不一致的。因此这种实现方式一般很难保证跟view或者Activity的生命周期保持一致,故很容易导致无法正确释放。如上所述,Handler使用要特别小心,否则很可能内存泄漏。 解决办法:在view 或者Activity生命周期结束前,确保Handler已没有未处理的消息(特别是延时消息)。

5.Thread 内存泄漏

线程也是造成内存泄露的一个重要源头,线程产生内存泄露的主要原因在于线程生命周期不可控,比如线程是Activity的内部类,则线程对象中保存了Activity的一个引用,当线程的run函数耗时较长没有结束时,线程对象是不会被销毁的,因此它所引用的老的Activity就出现了内存泄漏问题。解决办法:1.简化线程run函数执行的任务,使他在Activity生命周期结束前,任务运行完。2.为Thread增加撤销机制,当Activity生命周期结束时,将Thread的耗时任务撤销(笔者推荐这种)。

6.一些不良代码造成的内存压力

有些代码并不造成内存泄漏,但是他们是对没使用的内存没进行有效及时的释放,或是没有有效的利用已有的对象而是频繁的申请新内存。

(1) Bitmap 没调用recycle()

Bitmap 对象在不使用时,我们应该先调用recycle()释放内存,然后才置空,因为加载bitmap对象的内存空间,一部分是java的,一部分是c的(因为Bitmap分配的底层是通过jni调用的,Android的Bitmap底层是使用skia图形库实现,skia是用c实现的)。这个recycle()函数就是针对c部分的内存释放。

(2)构造Adapter时,没有使用缓存的convertView。 解决办法:使用静态holdview的方式构造Adapter。

这样到这里内存抖动和内存泄漏的发现,定位以及解决方法以说明完毕。

内存抖动一直是Android性能优化的重要环节,Android的性能优化除了内存抖动导致的卡顿外,还有布局优化、卡顿优化、启动优化等等。Android性能优化也是大厂面试的必备技术,面试也是被常常问及到的问题。本文可能介绍的不够完全,更多Android性能优化技术可私信:“手册”获取阿里专家特备整理出的《Android性能优化技术手册》,有这方面需求的,想挑战大厂的性能优化是必不可少的技能。

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

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

【私信:“手册”获取】Android性能优化解析

内存抖动的解决技巧

重点关注:循环或者频繁调用的地方!! 因为内存抖动就是 内存在被不断地回收及分配, 这种情况的话经常是 出现在 循环或者频繁调用的地方

,
上一页12末页

栏目热文

为什么我的手机屏幕老是抖(手机屏幕有时抖是什么原因)

为什么我的手机屏幕老是抖(手机屏幕有时抖是什么原因)

谈起每年6月份的活动,我们自然不能够错过6月18日这个一年一度的全民网购狂欢节。根据过往经验,每年的618购物节到来时,...

2022-11-01 22:58:38查看全文 >>

手机屏幕老抖咋办(手机屏下面一直抖怎么办)

手机屏幕老抖咋办(手机屏下面一直抖怎么办)

出行、购物、娱乐、社交……随着移动互联网的普及手机已经跟我们的生活息息相关也让生活中的很多人都成为了“低头族”长时间低头...

2022-11-01 23:04:36查看全文 >>

手机用久了屏幕老是抖(手机的屏幕一直在抖怎么解决)

手机用久了屏幕老是抖(手机的屏幕一直在抖怎么解决)

出行、购物、娱乐、社交……随着移动互联网的普及手机已经跟我们的生活息息相关也让生活中的很多人都成为了“低头族”长时间低头...

2022-11-01 22:51:00查看全文 >>

手机屏幕在抖该怎么办(手机屏幕老抖怎么办)

手机屏幕在抖该怎么办(手机屏幕老抖怎么办)

一弹窗广告设置晃动跳转模式。  弹窗广告或多或少影响用户使用电脑、手机等电子设备的体验感。针对弹窗广告,国家网信办、工信...

2022-11-01 22:44:37查看全文 >>

手机屏幕一直在抖动怎么办(手机屏幕一直轻微抖动)

手机屏幕一直在抖动怎么办(手机屏幕一直轻微抖动)

本文编辑今日头条作者维权骑士签约用户:小俊技术分享独家原创制作未经授权严禁转载,发现抄袭者将进行全网维权投诉分享生活小妙...

2022-11-01 22:42:25查看全文 >>

手机屏幕一直抖(手机屏幕老是在抖怎么办)

手机屏幕一直抖(手机屏幕老是在抖怎么办)

现在总有一些手机厂商会去宣传自己的手机产品有什么护眼技术,但实际上仔细考究过后会发现他们的产品采用的并不是护眼性能更好的...

2022-11-01 22:38:23查看全文 >>

梦见家里有人生病(梦见家里老人生病严重)

梦见家里有人生病(梦见家里老人生病严重)

昨天晚上做了一个可怕的梦,梦见我老公生病了,我手忙脚乱的找手机也找不到,好不容易找到了打电话也打不出去,手哆嗦的连电话号...

2022-11-01 23:00:20查看全文 >>

梦见家里来了个病人(梦见病人来到自己家)

梦见家里来了个病人(梦见病人来到自己家)

周公解梦:要是梦见了这件事,那么恭喜你了,接下来的运气好到爆要是梦见了自己的家里有龙的话,那么这是好运要来的兆头啊,表示...

2022-11-01 22:28:52查看全文 >>

梦见家里生病的人好了(梦见家里人生病了然后又好了)

梦见家里生病的人好了(梦见家里人生病了然后又好了)

周公解梦:要是梦见这件事,那么你会过上富足生活,但要懂得知足要是梦见了自己的钱财被人给骗走了,那就预示着你最近在生活上将...

2022-11-01 22:33:39查看全文 >>

梦见自己家里住满了病人(梦见病人住自己家里)

梦见自己家里住满了病人(梦见病人住自己家里)

睡觉做梦好不好?很多人的第一反应就是不好,因为大多数时候做梦醒来后反而更累了。可是日本有一项研究指出,梦少或者是无梦可能...

2022-11-01 22:24:58查看全文 >>

文档排行