Получение исключения 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.