关于handler的内存泄漏

来源:4-1 使用Handler实现打地鼠(上)

慕粉1358117939

2018-12-07 22:04:08

我的问题是,适用非静态的handler,关闭activity的时候,后台线程没有结束,这个时候activity不会被回收。

然后,后台线程继续运行,比如下载一个视频。

然后后台线程也会结束,那么后台线程结束的时候,activity会不会被GC回收呢?如果会被回收,怎么感觉也不会轻易的的OOM吧。

写回答

1回答

irista23

2018-12-09

Java是通过GC自动检查内存中的对象(什么时候检查由虚拟机决定),如果线程下载视频还没有结束尚未执行完,而该线程持有Handler的引用,这个Handler又持有Activity的引用,就有可能导致该Activity无法被回收(即内存泄露),虚拟机什么时候检测回收,我们是无法控制的,并不是你的线程结束,activity就会立即被回收,所以我们应该避免编写任何发生潜在OOM的程序。

0

0 学习 · 1613 问题

查看课程