Получение исключения OutOfMemory при работе с 8900 blackberry

Я разработал одно приложение для BlackBerry. Он отлично работает на 8520 и 9000, но когда я тестирую его на 8900. Через некоторое время он дает исключение Out Of Memory. Я получил следующее сообщение об отладке JDE

OutOfMemoryError
No detail message
net_rim_cldc-6(4A0CB600)
 Bitmap
 <init>
 0x8822

net_rim_cldc-6(4A0CB600)
 Bitmap
 <init>
 0x84A5

net_rim_cldc-7(4A0CB600)
 PNGEncodedImage
 getBitmapImpl
 0x39BD

net_rim_cldc-7(4A0CB600)
 EncodedImage
 getBitmap
 0x10F6

net_rim_cldc-7(4A0CB600)
 EncodedImage
 getBitmap
 0x10CE

Triton-5(4DA2E09E)
 Utility
 resizeAlert
 0x7F9D

Triton-1(4DA2E09E)
 AlertScreen
 paintBackground
 0x938

net_rim_cldc-8(4A0CB600)
 Field
 applyTheme
 0x1071

net_rim_cldc-8(4A0CB600)
 Field
 paintSelf
 0x26F0

net_rim_cldc-8(4A0CB600)
 Manager
 paintSelf
 0x9230

net_rim_cldc-9(4A0CB600)
 Screen
 doPaint0
 0x41D3

net_rim_cldc-9(4A0CB600)
 UiEngineImpl
 <private>
 0xB576

net_rim_cldc-9(4A0CB600)
 UiEngineImpl
 doPainting
 0x93AB

net_rim_cldc-9(4A0CB600)
 UiEngineImpl
 pushModalScreen
 0xA983

net_rim_cldc-9(4A0CB600)
 UiApplication
 pushModalScreen
 0x9089

Triton-1(4DA2E09E)
 AlertScreen
 show
 0x836

Triton-2(4DA2E09E)
 CloseCall
 update
 0xBDF

Triton-5(4DA2E09E)
 Request$4
 run
 0x638B

net_rim_cldc-6(4A0CB600)
 Application
 dispatchInvokeLater
 0xAD1

net_rim_cldc-6(4A0CB600)
 Application
 processNextMessage
 0x127A

net_rim_cldc-6(4A0CB600)
 Application
 enterEventDispatcher
 0xA76

Triton(4DA2E09E)
 TritonClient
 runApp
 0x3800

Triton(4DA2E09E)
 TritonClient
 main
 0x3825

Я использовал постоянную базу данных, потоки для HTTP-соединения. Я не понимаю, почему я только на 8900.

Заранее спасибо...

1 ответ

Использует ли ваше приложение какие-либо ресурсы изображений PNG? Похоже, что это так и выглядит, как будто какое-то изображение PNG достаточно большое, чтобы вызвать OutOfMemoryError когда Bitmap Экземпляр создается из изображения. Мой опыт разработки говорит о том, что это зависит от версии ОС, модели устройства и текущего состояния памяти устройства. Так что не удивляйтесь, что это работает на одном устройстве и не работает на другом. Чтобы предотвратить OutOfMemoryError просто убедитесь, что ваш Bitmap размеры не превышают удвоенные размеры дисплея. Например, если ваш дисплей имеет размер 320х240, то не используйте растровые изображения больше 640х480.

Другие вопросы по тегам