当前位置:网站首页>内存抖动
内存抖动
2022-06-28 18:10:00 【菜鸟xiaowang】
一.内存抖动
1.内存抖动:指在短时间内有大量的对象被创建或者被回收的现象。
2.内存抖动产生原因:主要是频繁(很重要)在循环里创建对象(导致大量对象在短时间内被创建,由于新对象是要占用内存空间的而且是频繁,如果一次或者两次在循环里创建对象对内存影响不大,不会造成严重内存抖动这样可以接受也不可避免,频繁的话就很内存抖动很严重),内存抖动的影响是如果抖动很频繁,会导致垃圾回收机制频繁运行(短时间内产生大量对象,需要大量内存,而且还是频繁抖动,就可能会需要回收内存以用于产生对象,垃圾回收机制就自然会频繁运行了)。
3.内存抖动影响:频繁内存抖动会导致垃圾回收频繁运行,造成系统卡顿。
解决方案
那么常见会出现内存抖动的地方在哪里?
1.Android的onDraw, onMeasure方法。
这里, 官方不建议在这创建对象,为什么?知道了吧,这里频繁会被底层调用,(可以去了解下安卓刷新机制),如果大量创建对象,频繁回收,就很容易内存抖动。如果是bitmap,他的内存是在native分配的,处理需要经过内核,使得等待时间更加长久。
2.处理io的地方
读写文件,内存流时候创建大量的byte[]对象会出现。
3.生产消费者模型的组件,这些频繁会产生大量的对象,比如日志,埋点组件等
4.复杂类型的json解析。
比如Gson。默认情况下,是通过反射生成新的实例。通过适配器使用对象池可以解决
推荐解决方案:
通过复用对象使用解决内存抖动,
比如享元设计模式,对象池方案。但对象池不能减少内存,需要对内存做限制,而且每种对象场景不一样,可能需要筛选。需要lru算法的数据结构等。可参考handler,glide对象池原理。
对象池原理很简单,就是创建对象使用完毕后存到内存里面,比如存到链表里面,下次使用对象的时候,优先在链表里面查,如果有就拿出来时候,如果没有就创建,这样就能避免大量对象创建
边栏推荐
- Small program graduation project based on wechat campus lost and found graduation project opening report function reference
- Go 降序排序 取 Top N
- 2022年6月27日-2022年7月3日(ue4视频教程)
- Chapter 2 processing files, cameras and GUI Cameo applications
- Lumiprobe ProteOrange 蛋白质凝胶染料说明书
- Industrial digitalization and new generation digitalization system design platform -- Lecture
- halcon知识:矩阵专题【01】
- Does the dataworks SQL script support if else judgment of statement blocks
- 9 excellent bitmap services
- 亿信华辰:地产企业数字化转型想要把握时代机遇
猜你喜欢

Industrial digitalization and new generation digitalization system design platform -- Lecture

Why can't China produce products like idea?

Database comparison tool

Applet graduation design based on wechat beauty salon technician appointment applet graduation design opening report function reference

Ten MySQL locks, one article will give you full analysis

Small program graduation design based on wechat real estate intermediary house viewing appointment small program graduation design opening report function reference

EasyExcel 学习笔记

数据资产为王,如何解析企业数字化转型与数据资产管理的关系?

如何设计业务高性能高可用计算架构 - 作业

亿信华辰:地产企业数字化转型想要把握时代机遇
随机推荐
Small program graduation design based on wechat driving school examination small program graduation design opening report function reference
Ask the bosses why the number type of Oracle CDC becomes a string when printed out. How can it be converted back?
华为云AOM发布2.0版本,3大特性亮相
浦发银行软件测试面试真题(小编面试亲测)
面部識別試驗涉及隱私安全問題?國外一公司被緊急叫停
NFT流动性协议的安全困局—NFT借贷协议XCarnival被黑事件分析
堆的概念和代码实现
jq插件分析啊啊
启牛学堂的vip证券账户是真的安全正规吗?怎么说
如何设计业务高性能高可用计算架构 - 作业
请问大智慧上开户安全吗
[flask] update and delete crud of data
基于固态激光雷达辅助的十六线机械雷达和单目相机的外参标定方法
Graphic system - 2 View drawing
GCC getting started manual
select/poll/epoll
C 语言进阶
如何从RHEL 8升级到RHEL 9
数据库MySQL语句期末复习 CTGU
Small program graduation project based on wechat mobile mall small program graduation project opening report function reference