2011-04-11 77 views
0

我開發了一款黑莓應用程序。它在8520和9000上工作正常,但是當我在8900上測試它時,它在一段時間內給出了「內存不足」異常。我得到以下消息JDE的調試使用8900黑莓手機時出現OutOfMemory異常

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。

在此先感謝...

回答

2

請問您的應用程序使用任何的PNG圖像資源?看起來像是這樣,看起來像一些PNG圖像足夠大,從圖像創建Bitmap實例時,會導致OutOfMemoryError。我的開發經驗表明它取決於操作系統版本,設備型號和當前的設備內存狀態。所以,不要驚訝它在一個設備上工作,而不在另一個設備上。爲了防止OutOfMemoryError只是確保您的Bitmap尺寸不大於加倍顯示尺寸。例如,如果您的顯示器是320x240,則不要使用大於640x480的位圖。

+0

嗨Arhimed,我沒有使用任何更大尺寸的圖像,但使用大量小尺寸圖像但圖像數量相同的9000圖像效果良好。這可能是問題嗎? – Rishabh 2011-04-12 06:17:27

+0

我認爲這可能與您如何處理圖像有關。例如,如果你保持對大量位圖的靜態引用,那麼我認爲它可能會在某個時刻導致「OutOfMemoryError」。 – 2011-04-12 08:42:32