当我想在我的应用程序中模拟内存不足崩溃时就是这种情况。我有很多来自Crashlytics的崩溃,表明最终用户遇到了OOM崩溃,我无法使用我的设备(Samsung S4)重现它们。我只是崩溃而且没有来自崩溃的其他痕迹。
我想知道是否有人可以为他们的测试重现它们(不需要任何代码更改)。
我看到了这个:Testing Android for Out of Memory scenarios,但还没有机会运行它。
任何帮助将不胜感激。
答案 0 :(得分:1)
有多种方法可以导致OOM。
使用非常大的图像(顺便说一句,此用例是应用程序中许多真正的OOM问题的来源)。我在我的Recycler中替换了1个元素的图像,所以当我滚动到它时,它会加载大图像(然后我可以用这种方式驱动测试)。
创建一个循环,将对象分配给内存。你可以在循环中“新建”一堆对象,并以这种方式运行它。如果将足够的字符串或int对象分配到单个数组中,最终将运行OOM(这也是逐步构建到OOM条件的好方法)。字符串将导致OOM更快然后整数(但是向数组添加足够的对象,最终它会变得太大)。
答案 1 :(得分:0)
我希望我能正确理解这个问题:如果你不想改变很多设置,这是一种非常简单的方法。进入开发选项并使其成为“无后台处理”。现在你可以退出应用程序,启动一个新应用程序并返回原始版本,它将从内存不足中消失
答案 2 :(得分:0)
我能够通过替换app非常大的图像中的图像列表来模拟OOM错误。 5mb而不是通常的250k。维基媒体有很多你可以使用的大图像。 https://commons.wikimedia.org/wiki/File:Snake_River_(5mb).jpg