我在黑莓上开发了一个应用程序。它在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。
提前致谢...
答案 0 :(得分:2)
您的应用是否使用任何PNG图像资源?看起来它看起来像一些PNG图像足够大,当从图像创建OutOfMemoryError
实例时会导致Bitmap
。我的开发经验表明它取决于操作系统版本,设备型号和当前设备RAM状态。所以不要惊讶它在一台设备上运行而在另一台设备上运行。要阻止OutOfMemoryError
,请确保您的Bitmap
维度不超过显示尺寸的两倍。例如,如果您的显示器是320x240,则不要使用大于640x480的位图。