今天很恼火, 大致状况是这样的, 程序直接进入数据库写操作InsertDBActivity中,异步完成80W条数据的插入, 不会OOM; 当我在进入InsertDBActivity之前先来了个用户介绍页(滑动预览6张图片), 然后换了个高清的背景图,够炫,但是悲剧的一幕发生了 在log中可以明显的看到 数据插入到40W多的时候 OOM了! 什么原因呢? 我debug追踪了好久,代码没怎么改动呀,,任何地方都断点看了, 就是老是出现内存溢出, 我就纳闷了······· 只有一种情况, 我加的这些代码中有问题! 可是我也没加什么东西呀? 不对·· 有6张介绍页!
不会吧? 6张介绍页加起来内存才占了不到1M,, 这个引起的oom? 与测试机MI2的内存比起来显然微不足道, 但是没有其他地方动过啊! 哦 还有一张高清的背景图·· 但是我看了下工程背景文件大小, 也不到1M,, 怒了··········
遂········
1.将介绍页屏蔽掉,
2.将高清背景图去掉,
3.将数据量保持在80W .
再走一遍 果然, 没事嘞~~ 但是······
还原1,2, 将数据量再提升至80W, 内存溢出;
还原1,2, 将数据量降至20W, 不溢出;
还原1,2, 将数据量提升至40W, 内存溢出······ 我去 有完没完啊
然后就乖乖的检查代码执行流程, 查找一切可以导致内存溢出的可能···············
跟踪到activity的跳转一行, 我怎么看都像少了点什么, 但又说不上来, activity不是压栈管理嘛, 也就没网这上面想, 大爷的, 问题就出在这里············
当activity入栈处于非栈顶,activity中的资源未消失,等待出山,只有等到