Rob*_*bin 10 android android-6.0-marshmallow samsung-galaxy
三星Galaxy S6搭载Android 6.0.0和6.0.1
我的应用程序运行良好,代码分析显示没有内存泄漏.SmartManager显示该应用程序使用~40MB的内存.我杀了应用程序(使用"当前正在运行的应用程序"概述 - 不确定这是如何用英语调用的,对不起.手机左下角的键,显示所有正在运行的应用程序的微缩模型列表...) ,然后重新开始.
现在,SmartManager不再为我的应用程序显示~40MB的内存,但是......更多.50. 100. 400.它各不相同,但每次都在增长.过了一会儿,我的应用程序实际上崩溃了OutOfMemoryException.有时甚至在尝试抛出OutOfMemoryException时"内存不足"......
我必须卸载并重新安装应用程序才能重置其内存消耗.同样的APK在我测试过的所有其他手机上都能正常运行(例如S5与Android 5.0).不知道造成这种情况的原因.不知道是什么可能会导致这!任何帮助/提示/建议......?
编辑:使用Android 6.0.1在S5上的行为相同,但在使用Android 5.0的S5上则不行!
Edit2:谢谢,所有贡献的人.我仍然没有一个我满意的答案,但提到了一些我会研究的想法.大多数人都专注于MemLeak问题,虽然这听起来很合理,但我想强调Android 4或5上没有泄漏,只有6个.(我还没有测试过7.)此外,泄漏只发生当我强行杀死应用程序时(我有时需要做以测试正确的关机和重新启动行为),并且只是没有连接调试器(这使得测试/调试此行为在后面是一种痛苦).
该应用程序启动一项服务作为绑定服务.绑定到应用程序上下文 - 根据文档应该在应用程序停止时自行清理.不幸的是,这个赏金的时间已经不多了.到目前为止,上述服务似乎是我问题的最可能的来源.因此,我将奖励Qamar赏金,因为他是第一个在评论和答案中都提到这一点的人.你们其他人,非常感谢你们,并投票赞成.
如果您本身做错了什么,请分析您的代码和图像。就像非常大的可绘制图像一样。确保正确实现回收器或列表视图。以下链接可能对您有帮助。
使用leakcanary库来检测并确保没有泄漏
从 Android Studio 附带的内存监视器调用 gc 以获得正确的内存使用值,导致 gc 不频繁运行。
使用大的堆大小。 <application android:largeHeap="true"明显地
使用应用程序上下文启动服务startService(new Intent(getApplicationContext(),MyService.class));
| 归档时间: |
|
| 查看次数: |
1481 次 |
| 最近记录: |