Наше приложение использует много растровых изображений. Он отлично работает, например, на G1, XOOM. Но в HTC Desire есть ошибка OutOfMemory. В коде мы используем try / catch (OutOfMemoryError e) и все устройства (кроме Desire) выдают исключение, но HTC просто убивает приложение без исключения OOM. Мы ограничили объем памяти для растровых изображений до 12 Мб, и казалось, что это решение исправило проблему, но у клиента все еще есть проблема с HTC Desire HD. Существует OOM даже с ограничением в 12 Мб. Вот журналы:
06-07 12:03:43.978 E/dalvikvm-heap( 29616):1140128-byte external allocation too large for this process.
06-07 12:03:43.978 E/dalvikvm( 29616):Out of memory: Heap Size=12311KB, Allocated=9420KB, Bitmap Size=12139KB, Limit=21884KB
06-07 12:03:43.978 E/dalvikvm( 29616):Trim info: Footprint=15751KB, Allowed Footprint=15751KB, Trimmed=3440KB
06-07 12:03:43.978 E/GraphicsJNI( 29616):VM won't let us allocate 1140128 bytes
AFAIK Существуют различные ограничения размера кучи для устройств (G1: 16 МБ, Droid: 24 МБ, Xoom 48 МБ). На мой взгляд, система должна давать как минимум 16 МБ, но у нас есть ООМ с 12 МБ. Мой вопрос: как узнать, сколько свободного размера кучи доступно для растрового изображения для Android 2. *? Или, пожалуйста, посоветуйте, как избежать такой проблемы другими способами. К вашему сведению, мы не можем использовать меньше растровых изображений, особенно когда оно отлично работает на других устройствах. Заранее спасибо за любую помощь!