2012-06-23 3 views
1

가끔 "비트 맵 크기가 VM 예산을 초과합니다"라는 오류 메시지가 나타납니다. 각 액티비티에 500x300 PNG 그림이있는 20 개의 액티비티를 차례로 열 때 발생합니다. 나는 안드로이드 : background = "@ drawable/xxxxxxxx"로 XML 레이아웃에서 그림을 구현할 때 문제가 발생하지 않았다."비트 맵 크기가 VM 예산을 초과합니다"

Java 코드에서 그림을 구현할 때 오류가 먼저 발생했습니다.

<ImageView 
android:id="@+id/ImVpic" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content"/> 

ImageView pic; 
pic = (ImageView)findViewById(R.id.ImVpic); 
pic.setImageResource(R.drawable.picture); 

어떻게 그 오류를 없앨 수 있습니까? 내 코드에서 누락 된 부분은 무엇입니까? 나는 그것이 실제로 작동한다는 것을 의미하지만 때때로 그것은 그 짜증나는 오류를 던져 버린다.

답변

0

이렇게 자주 묻는 질문입니다. 이미지를로드하는 동안 사용 가능한 메모리가 부족한 것 같습니다. dalvik이 사용하지 않는 이미지 (또는) 객체에서 메모리를 회수 할 수 있도록 이미지에 대한 긴 참조를 유지하지 않도록하십시오.

+0

내 이미지에 대한 참조가 실제로 매우 짧습니다 (4 자). 그게 문제라고 확신합니까? 참조가 짧지 만 앱이 여전히 다운된다는 의미입니다. – JohnD

+0

참고 크기가 아닙니다. 참조가 "개체"를 가리키는 경우 해당 개체는 GC에 적합하지 않습니다. – kosa

+0

내 참조가 Object를 가리 키지 않습니다. 그렇습니까? – JohnD

관련 문제