前言
基于MVP 模式的理解进行内存泄漏的测试
1.对MvpSample2工程的测试(测试记录)
-
第一次: 清理弱引用和解除rx的订阅,rx里面没开线程跑,虽然栈中存在presenter$tologin$1,但是引用为0.,所以内存不泄漏
-
第二次:清理弱引用和解除rx的订阅,rx里面开了新的线程跑,presenter对象被线程所持有,activity引用不存在,presenter的内存泄漏了
-
第三次:清理弱引用和解除rx的订阅,rx里面上游开了循环(在上游的线程跑),虽然内存中存在presenter$tologin$1,内存不泄漏,跟第一次一样
-
第四次:没有清理弱引用和解除rx的订阅,rx里面没开线程跑,虽然内存中存在presenter$tologin$1,但是引用为0.,所以内存不泄漏
-
第五次:没有清理弱引用和解除rx的订阅,rx里面上游开了循环(在上游的线程跑),presenter的引用被rx上游线程持有,释放不了,内存泄漏了,而View已经不存在内存,是因为View在P层中加了弱引用
-
第六次:V在P层中是强引用持有,没有解除rx的订阅,rx里面上游开了循环(在上游的线程跑), presenter和View都回收不了,因为