三星 Galaxy S3 在我的应用程序上几乎立即使用 32mb 堆大小,而在几乎任何其他 android 设备上它从 +- 5mb 开始(在 logcat 中看到这一点,如果需要,可以从两个不同的设备发送屏幕截图)。认为这是我的应用程序仅在 Galaxy s3 上因“OutOfMemory”异常而崩溃的原因,在 Galaxy Y Duos 和 Pocket 上完美运行。
任何有关为什么会发生这种情况的帮助/建议将不胜感激,谢谢。
三星 Galaxy S3 在我的应用程序上几乎立即使用 32mb 堆大小,而在几乎任何其他 android 设备上它从 +- 5mb 开始(在 logcat 中看到这一点,如果需要,可以从两个不同的设备发送屏幕截图)。认为这是我的应用程序仅在 Galaxy s3 上因“OutOfMemory”异常而崩溃的原因,在 Galaxy Y Duos 和 Pocket 上完美运行。
任何有关为什么会发生这种情况的帮助/建议将不胜感激,谢谢。
正如 mario 所说,问题在于 s3 分辨率高于其他模型,因此图像尺寸更大,因此内存消耗也更大。
虽然值得一提的是,S3 似乎有一点最大堆大小来解决它的分辨率,因为我也遇到过内存不足的问题,但对于其他具有相同分辨率但堆限制更高的设备却没有。
在大多数情况下,OOM 不是加载位图或类似的,但主要是基于 GPU 阅读此链接和此链接也只是查看此解决方案以解决由 OOM 引起的各种情况
在我的情况下,我已经替换了试图从中加载的图像可绘制对象,可以使用 drawable-nodpi
在我的应用程序中,drawable-hdpi 拥有该应用程序的所有图像。在大多数设备上,没有问题。在 S3 上,该应用程序将占用 2 倍的内存,然后遇到内存不足的问题。
我刚刚创建了与 drawable-hdpi 文件夹具有相同内容的 drawable-xhdpi 文件夹并在 S3 上运行它。立即注意到内存占用是 1/2,并且没有内存不足的问题。