最近调试的时候发现一个很奇怪的问题,希望各位高手指导。在startActivty的时候如果finish掉当前的Activity就会出现OOM,但是如果我不把当前的Activity finish掉就不会有问题。
这个finish跟内存管理的机制有什么关系呢?想破脑袋想不明白,求指导!

解决方案 »

  1.   

    finish掉当前的Activity就会出现OOM,应该是你的activity,destroy后有内存泄漏了,建议检查你的activity
      

  2.   

    destroy后有内存泄漏 ? 怎么理解,大概什么样的情况会有可能?
      

  3.   

    根据1楼的建议,尝试了下把onDestroy放空,但是还是会oom,奇怪。
      

  4.   

    是不是有什么静态变量引用了activity的context, 导致这个activity无法被回收
      

  5.   

    确实是在新的Activity里面加载contentview的时候bitmap时候出现的oom。
    现在我比较好奇为什么调不调用finish会有这个变化,按理说应该是finish了回去清理当前的mem资源吧,
    不调用的话应该是不会gc的。但是现在的现象来看,貌似刚好相反,所以比较不解。
      

  6.   

    activity还有其他对象引用, 所以不会被销毁
      

  7.   

    既然不会被销毁,那是否调用finish应该都一样才对吧
      

  8.   

    方便发activity的代码么你看看是不是finish方法执行死循环了  还是做了反而占用更多内存的事了 finish方法倒是可以发来一看
      

  9.   

    我试过将finish放空,同样的现象,应该可以说明finish没有内存泄漏吧。
      

  10.   

    楼上一直说让你粘代码,粘log你都没个反应,谁还顶啊???