【发布时间】:2011-10-12 22:33:11
【问题描述】:
我的 android 应用程序出现 OutofMemoryError,我对发生的事情有点困惑。基本上发生的情况是,我可以在前几次运行它,但是当我尝试退出它然后快速重复地再次打开它时,我得到一个内存不足的错误。
我已经尝试研究这个主题,并发现 recycle() 方法通常是问题所在。但是,我已经在每个位图(存储在对象容器中,存储在数组列表中)上调用了回收方法,但仍然遇到问题。
完成此操作后,我尝试使用 Eclipse 内存分析器查看堆转储,但遇到了一些奇怪的事情。退出活动后(回到启动器活动,然后通过按钮再次打开活动,我使用内存分析器截取了堆转储的屏幕截图。事实证明,每次我退出并重新进入活动,正在创建活动对象的另一个实例,并且没有释放旧的实例,即使正在调用 onDestroy() 方法(其中也有回收/清理代码。
然后我尝试覆盖 finalize 方法,以查看当活动退出回到启动器活动时是否正在调用它,但它没有被调用。我在其他一些 stackoverflow 线程上读到 finalize() 并不总是被调用,所以最后,我仍然不确定发生了什么。
最后,我的问题是: 我应该如何确保在退出活动进入另一个活动后释放活动对象(活动对象本身,而不是从活动创建的东西)?
【问题讨论】:
-
您是否在进行堆转储之前运行了一次 GC,并且仍然看到该活动的多个实例?如果是这样,您可能会以某种方式泄漏 Activity。如果没有您的代码或有关您正在做什么的更多信息,很难猜测这是如何发生的。
-
你得到解决方案了吗
-
嗨,你有解决办法吗?你介意分享给任何人吗??
标签: android android-activity memory-management out-of-memory