常见的八种导致 APP 内存泄漏的问题(下)

简介:

Handlers


同 样的,定义一个匿名的 Runnable 对象并将其提交到 Handler 上也可能导致 activity 泄漏。Runnable 对象间接地引用了定义它的activity 对象,而它会被提交到 Handler 的 MessageQueue 中,如果它在 activity 销毁时还没有被处理,那就会导致 activity 泄漏了。

3a040002fb294eb41d9b

39ff0004ec2ebebd1fc3

Threads


同样的,使用 Thread 和 TimerTask 也可能导致 activity 泄漏

3a010004d40169f39a80

3a010004d4026c7d552a

Timer Tasks


只要它们是通过匿名类创建的,尽管它们在单独的线程被执行,它们也会持有对 activity 的强引用,进而导致内存泄漏

3a020004c1676cbaff1d

39fa0004e71976880e91

Sensor Manager


最 后,系统服务可以通过 context.getSystemService 获取,它们负责执行某些后台任务,或者为硬件访问提供接口。如果 context 对象想要在服务内部的事件发生时被通知,那就需要把自己注册到服务的监听器中。然而,这会让服务持有 activity 的引用,如果程序员忘记在 activity 销毁时取消注册,那就会导致 activity 泄漏了。

3a020004c20cf936404d

39fa0004e7b377c0908a

现 在,我们展示了八种很容易不经意间就泄漏大量内存的情景。请记住,最坏的情况下,你的 APP 可能会由于大量的内存泄漏而内存耗尽,进而闪退,但它并不总是这样。相反,内存泄漏会消耗大量的内存,但却不至于内存耗尽,这时,APP 会由于内存不够分配而频繁进行垃圾回收。垃圾回收是非常耗时的操作,会导致严重的卡顿。在 activity 内部创建对象时,一定要格外小心,并且要经常测试是否存在内存泄漏。










本文转自 小强测试帮 51CTO博客,原文链接:http://blog.51cto.com/xqtesting/1969869,如需转载请自行联系原作者
目录
相关文章
|
2月前
|
监控 测试技术 Shell
APP的CPU,内存和流量如何测试?
APP的CPU,内存和流量如何测试?
|
2月前
|
测试技术 Android开发 UED
如何对APP的内存使用情况进行监测?
如何对APP的内存使用情况进行监测?
|
11月前
|
iOS开发
[✔️]xcode Instrucments排查app的内存泄露
[✔️]xcode Instrucments排查app的内存泄露
347 0
|
iOS开发 异构计算
如何增加 iOS APP 虚拟地址空间及内存上限?XNU 内核源码解读
1. 引言 最近一段时间在做钉钉 iOS 内存专项治理,解决内存不足时的 jetsam 事件及 malloc 的异常崩溃。在进程创建时系统会为每个 app 设定内存最大使用上限,内核会维护一个内存阈值优先级列表,当设备内存不足时低优先级的 app 会首先被内核中止进程。在阅读 XNU 内核源码过程中我们发现提供系统了两种能力可以扩展 App 的虚拟地址空间(com.apple.developer.kernel.extended-virtual-addressing)和增加内存使用上限(com.apple.developer.kernel.increased-memory-limit)。
1424 0
如何增加 iOS APP 虚拟地址空间及内存上限?XNU 内核源码解读
|
Android开发
Android进程守护,让APP在系统内存中常驻(二)
Android进程守护,让APP在系统内存中常驻
566 0
|
Android开发
Android进程守护,让APP在系统内存中常驻(一)
Android进程守护,让APP在系统内存中常驻
848 0
|
数据库 Android开发
Android | App内存优化 之 全面理解MAT
Android | App内存优化 之 全面理解MAT
|
消息中间件 存储 缓存
Android | App内存优化 之 内存泄漏 要点概述 以及 解决实战
Android | App内存优化 之 内存泄漏 要点概述 以及 解决实战
|
IDE Java API
Android | App内存优化 之 内存抖动解决实战
Android | App内存优化 之 内存抖动解决实战
|
存储 算法 Java
Android | App内存优化 之 JVM & Android内存管理机制及GC机制 (拓展.GCRoot)
Android | App内存优化 之 JVM & Android内存管理机制及GC机制 (拓展.GCRoot)

热门文章

最新文章