关于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的程序。
相似问题