Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/217.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Can';在具有相同内存级别的AVD设备上复制OOM_Android_Avd - Fatal编程技术网

Android Can';在具有相同内存级别的AVD设备上复制OOM

Android Can';在具有相同内存级别的AVD设备上复制OOM,android,avd,Android,Avd,尝试在AVD(5.0)上重新创建三星S4(5.0.1)上的OOM。两个都报告MemoryClass 128,但我无法在我的AVD上重现OOM条件 我最终得到了一个真正极端的测试位图6000x4000(96MB,没有插入采样。当然,这对生产来说不是一个好主意,但这只是用于测试)我使用的是普通位图工厂 S4在装载过程中持续碰撞,这并不奇怪:) 奇怪的是:在AVD上,它始终加载,没有任何问题。我总是能够将巨大的内存分配到接近可用MemoryClass的极限,就好像根本没有碎片一样 具有相同VM堆大小的

尝试在AVD(5.0)上重新创建三星S4(5.0.1)上的OOM。两个都报告MemoryClass 128,但我无法在我的AVD上重现OOM条件

我最终得到了一个真正极端的测试位图6000x4000(96MB,没有插入采样。当然,这对生产来说不是一个好主意,但这只是用于测试)我使用的是普通位图工厂

S4在装载过程中持续碰撞,这并不奇怪:)

奇怪的是:在AVD上,它始终加载,没有任何问题。我总是能够将巨大的内存分配到接近可用MemoryClass的极限,就好像根本没有碎片一样

具有相同VM堆大小的设备不应该表现相似吗?这两种设备上的堆碎片化应该没有重大区别,因为应用程序是新安装和启动的

我很困惑,因为AVD看起来不是一个有用的测试设备,至少在ART的内存管理方面是这样


我可能对MemoryClass和VM堆大小有一些基本的误解。有什么想法吗?

只是一条建议,同样的事情也发生在我身上,直到我把crashlytics by Fabric(现在是谷歌买的)放进里面,我才知道普通三星手机的内存只有200到400 MB,现在要在emulator上测试,试着制作一个有200到300 MB内存的设备并在上面运行,OOM错误是开发者生活中的痛苦。您是否尝试使用任何第三方LIB(glide/picaso)加载位图?@Pulkit:谢谢您的建议。是的,我已经创建了一个低RAM的设备,例如Nexus5、API21、200MB RAM、64MB VM堆-结果:MemoryClass 256。我甚至可以分配7700x7700的位图,几乎可以毫无问题地占用整个堆的大小。我一定会研究crashlytics的事情。@Radhey:我还没有使用第三方LIB,因为我想学习基础知识。当然,使用现成的库是很好的。我确实通过使用inSampleSize对位图进行下采样来运行我的应用程序,这没有问题。但我对此并不满意,因为我想计算一种用于采样或将深度更改为RGB565等的甜因子。。查看Glide源代码,它们似乎只是在默认情况下采样到屏幕大小,或者您可以使用覆盖,但接下来您会再次面临使用哪种大小的问题:)我在代码中没有发现任何内存魔法…嗯,IDK,为什么您要花时间在这方面!我们还需要在安卓系统中探索很多其他东西。我的意思是,知名应用程序(whats应用程序、instagram等)使用这些第三方LIB进行图像显示。不管怎样,如果你想复制OOM,遵循这个,