android中增大当前程序运行内存,Android应用程序内存不足问题 - 尝试了一切但仍然不知所措...

我花了整整4天时间尽我所能来弄清楚我正在开发的应用程序中的内存泄漏,但事情很久以前就停止了。

我正在开发的应用程序具有社交性,因此请考虑配置文件活动(P)并列出包含数据的活动 - 例如徽章(B)。 您可以从配置文件跳转到徽章列表到其他配置文件,到其他列表等。

So imagine a flow like this P1 -> B1 -> P2 -> B2 -> P3 -> B3, etc. For consistency, I'm loading profiles and badges of the same user, so each P page is the same and so is each B page.

这个问题的一般要点是:在导航了一下后,根据每个页面的大小,我在随机位置得到了一个内存不足的异常 - 位图,字符串等 - 它似乎不一致。

在做了一切可以想象的事情来弄清楚为什么我的内存不足之后,我什么也没想出来。 我不明白的是,如果Android在加载时耗尽内存而不是崩溃,那么为什么Android不会杀死P1,B1等。 如果我通过onCreate()和onRestoreInstanceState()返回它们,我会期望这些早期活动会死亡并复活。

Let alone this - even if I do P1 -> B1 -> Back -> B1 -> Back -> B1, I still get a crash. This indicates some sort of a memory leak, yet even after dumping hprof and using MAT and JProfiler, I can't pinpoint it.

我已禁用从Web加载图像(并增加了加载的测试数据以弥补它并使测试公平)并确保图像缓存使用SoftReferences。 Android实际上试图释放它所拥有的一些SoftReferences,但就在它崩溃内存之前。

徽章页面从Web获取数据,从BaseAdapter将其加载到EntityData数组中并将其提供给ListView(我实际上使用的是CommonsWare的优秀MergeAdapter,但在此Badge活动中,实际上只有1个适配器,但是我 无论哪种方式都想提到这个事实)。

我已经完成了代码并且无法找到任何可能泄漏的内容。 我清除并取消了我能找到的所有内容,甚至是System.gc()左右,但应用程序崩溃了。

我仍然不明白为什么堆栈上的非活动活动不会被收获,我真的很想知道这一点。

在这一点上,我正在寻找任何提示,建议,解决方案......任何有用的东西。

谢谢。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值