Android Others部分内存泄漏 OOM分析
本周公司项目解决内存泄漏,使用Android studio profiler工具进行分析。
在人工monkey测试点击管理页面各项菜单后,工具内存查看页面看到内存有增长不是释放的情况。但是dump后未发现哪个页面 或明确的对象没有释放。多次对比dump发现内存并没有明显增加。
持续几天未找到原因,后仔细发现,增加的内存属于Others部分,该部分官方解锁是:未知分类的不。这部分在dump后也没有明确的对象对应,因此更难找到内存泄漏的地方了。如下图
今天在朋友的帮助下得到了解决。朋友提醒可能是raw资源泄漏,然后就是仔细观察什么操作会使Others部分增加。根据该思路分析,发现是点击菜单都会有点波动,说明是每个菜单的公用逻辑出了问题。仔细分析发现公用逻辑就是切面点击拦截事件,果断去掉拦截,测试发现正常。然后再认真分析拦截里面的逻辑:播放按键音,记录日志,放重复点击三个主要逻辑。想到朋友提醒的raw资源,果断怀疑是播放按键音的问题。进入方法查看,发现每次播放都会使用系统的 SoundPool load一次按键音资源,然后播放。播放结束未释放。找到根本原因,改之。
总结本次问题难发现原因是第一次遇到系统加载raw等资源类导致的oom,其增长的内存可能无法分类,放在了Others里面,dump也无法明确发现。
PS:若有其他更好的方式揪出此类泄漏点,请留言互相讨论学习。
Android Others部分内存泄漏 OOM分析相关推荐
- Android常见的内存泄漏分析
内存泄漏原因 当应用不需要在使用某个对象时候,忘记释放为其分配的内存,导致该对象仍然保持被引用状态(当对象拥有强引用,GC无法回收),从而导致内存泄漏. 常见的内存泄漏源头 泄漏的源头有很多,有开源的 ...
- Android内存泄漏的分析和避免
内存泄漏 Java是垃圾回收语言的一种,其优点是开发者无需特意管理内存分配,降低了应用由于局部故障(segmentation fault)导致崩溃,同时防止未释放的内存把堆栈(heap)挤爆而导致程序 ...
- Android中的内存泄漏
** Android中的内存泄漏 ** Android中的内存泄漏: 概念:程序在申请内存后,当该内存不需再使用但却无法被释放 & 归还给程序的现象,对应用程序的影响,容易使得应用程序发生内存 ...
- 谈谈android中的内存泄漏
写在前面 内存泄漏实际上很多时候,对于开发者来说不容易引起重视.因为相对于crash来说,android中一两个地方发生内存泄漏的时候,对于整体没有特别严重的影响.但是我想说的是,当内存泄漏多的时候, ...
- RK3588 Android12 DMABUF内存泄漏问题分析
RK3588 Android12 DMABUF内存泄漏问题分析 什么是DMABUF DMABUF是多媒体设备之间共享内存的一种特定buffer结构,不同设备可以通过DMABUF的fd进行跨进程共享内存 ...
- 关于Android应用程序内存泄漏 你需要知道的一切
关于Android应用程序内存泄漏 你需要知道的一切 原文:https://blog.aritraroy.in/everything-you-need-to-know-about-memory-lea ...
- android 内存分析 郭霖_android 内存泄漏(OOM)问题总结
对于Java来说,就是new出来的Object 放在Heap上无法被GC回收 Paste_Image.png Context Context Context类本身是一个纯abstract类,它有两个具 ...
- android内存泄漏原因分析,Android Studio3.6的内存泄漏检测功能 VS LeakCanary
2020年2月,谷歌发布了Android Studio 3.6版.它包括一个新的"内存泄漏检测"功能.这是否意味着我们不再需要流行的内存泄漏检测库"Leak Canary ...
- android内存泄漏原因分析,android 内存泄漏问题
内存泄露问题在一些压力测试的场景很容易暴露,例如一些常用应用场景反复操作(eg:反复切换前后摄像头,反复进入退出相机应用.压力拍照等等). 内存泄露一般表现为: ①内存分配释放,导致进程空间虚拟地址被 ...
最新文章
- usaco Overfencing 穿越栅栏(BFS)
- 基于python的证件照_20行代码教你用python给证件照换底色的方法示例
- java网页爬虫xml_基于webmagic的java网页爬虫,抓取网页指定节点,然后使用dom4j分析xml数据...
- js模块化编程之CommonJS和AMD/CMD
- Kafka Eagle 源码解读
- (转载)TL-WN725N V3无线网卡驱动移植与wireless工具wpa_supplicant-2.6
- Angular中使用双向数据绑定操作表单的input、checkboc、radio、select、textarea实现简单的人员登记系统实例
- Java Excel导出
- pagerank数据集_从小白视角理解数据挖掘十大算法
- python word2vec 移植_真实资讯语料下的Word2Vec的迁移实践:Tag2Vec
- java编译器源码详解_已更新至第8章 | LLVM 编译框架详解
- 2017-2018-2 1723《程序设计与数据结构》第三周作业 实验一 总结
- 移动办公平台2015年年度盘点
- Oracle数据库实验报告六 PL/SQL基础
- 人工智能电力行业应用,人工智能的需求分析
- 修改oracle用户资源限制,oracle用户登陆失败次数限制修改
- 如何利用云流送(Cloud Streaming)构造一个全三维、沉浸式的数字化虚拟景区
- 开源免费的C/C++网络库 c/c++ sockets library 七剑下天山
- play框架使用起来(6)
- html3d轮播图片效果,CSS3,3D效果轮播图