2011-04-11 5 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 이미지 리소스를 사용합니까? 이미지에서 Bitmap 인스턴스를 만들 때 PNG 이미지가 OutOfMemoryError이 될만큼 충분히 크고 모양이있는 것 같습니다. 내 개발 경험에 따르면 OS 버전, 장치 모델 및 현재 장치 RAM 상태에 따라 다릅니다. 그래서 한 장치에서는 작동하고 다른 장치에서는 작동하지 않는다는 사실에 놀라지 마십시오. OutOfMemoryError을 방지하려면 Bitmap 크기가 디스플레이 크기의 두 배보다 큰지 확인하십시오. 예를 들어, 디스플레이가 320x240 인 경우 640x480보다 큰 비트 맵을 사용하지 마십시오.

+0

안녕하세요. 더 큰 크기의 이미지를 사용하고 있지 않지만 작은 크기의 이미지를 많이 사용하지만 9000에서 잘 작동하는 이미지 수가 동일합니다. 문제가 될 수 있습니까? – Rishabh

+0

이것이 이미지 처리 방법과 관련이 있다고 생각합니다. 예를 들어 많은 수의 비트 맵에 대한 정적 참조를 유지한다면 어떤 시점에서 'OutOfMemoryError'가 발생할 수 있다고 생각합니다. –