Map클래스를 이용하여 이벤트를 주거나 정보를 저장해 놓고~
Wallpaper에 움직임을 많이 주는데요.
Map클래스를 세 개 사용하고(한 Map에 최대 1200개 까지 들어가 있음),
홈 화면에 Wallpaper를 실행 시켜 놓은 상태에서
미리보기를 실행 했을 경우 메모리가 쌓인 것을 볼 수가 있었습니다.
11-02 16:27:06.074: D/DEBUG1(1411): onSurfaceCreated : com.google.android.gles_jni.EGLConfigImpl@40b0ca70
11-02 16:27:06.074: D/DEBUG(1411): 0 Heap Size onSurfaceCreated : 4798824
11-02 16:27:06.273: D/DEBUG(1411): 210003 -> 1 Heap Size onSurfaceCreated : 4929784
11-02 16:27:06.429: D/DEBUG(1411): 2 Heap Size onSurfaceCreated : 5483296
11-02 16:27:06.437: D/DEBUG(1411): 3 Heap Size onSurfaceCreated : 5483328
11-02 16:27:06.437: D/DEBUG(1411): 4Heap Size onSurfaceCreated : 5483352
11-02 16:27:06.437: D/DEBUG1(1411): onSurfaceChanged
// 미리보기에서 첫번째 실행 하고 종료 시켰을 때 메모리 상태
11-02 16:27:08.421: D/DEBUG(1411): Heap Size Before release : 5789328
11-02 16:27:08.542: D/DEBUG(1411): Heap Size After release : 5789544
11-02 16:27:11.632: D/DEBUG1(1411): onSurfaceCreated : com.google.android.gles_jni.EGLConfigImpl@40d46610
11-02 16:27:11.667: D/DEBUG(1411): 0 Heap Size onSurfaceCreated : 5386648
11-02 16:27:11.910: D/DEBUG(1411): 210003 -> 1 Heap Size onSurfaceCreated : 5517512
11-02 16:27:12.019: D/DEBUG(1411): 2 Heap Size onSurfaceCreated : 6068416
11-02 16:27:12.023: D/DEBUG(1411): 3 Heap Size onSurfaceCreated : 6068416
11-02 16:27:12.027: D/DEBUG(1411): 4Heap Size onSurfaceCreated : 6068416
11-02 16:27:12.027: D/DEBUG1(1411): onSurfaceChanged
// 미리보기에서 두번째 실행 하고 종료 시켰을 때 메모리 상태
11-02 16:27:13.871: D/DEBUG(1411): Heap Size Before release : 5962288
11-02 16:27:14.027: D/DEBUG(1411): Heap Size After release : 5962288
< 넥서스 s , Sdk 2.3.3으로 테스트 >
이렇게 메모리가 계속 쌓이다가 결국 뻣어버리는 현상이 발생
선언 다음과 같음.
그래서 종료 시 clear를 시켰더니, onDrawFrame에서 null값으로 인식 하는 것을 보고,
아!!! 미리보기와 홈 화면에 실행되고 있는 Wallpaper가 서로 메모리를 공유하는 구나!!
라는 것을 인지했습니다.
그래서 모든 변수에 static을 줬더니
private static Map<Integer,GLSquare> map1 = new HashMap<Integer, GLSquare>();
private static Map<Integer,GLSquare> map2 = new HashMap<Integer, GLSquare>();
private static Map<Integer,GLSquare> map3 = new HashMap<Integer, GLSquare>();
로그 결과가
11-02 16:33:40.535: D/DEBUG(1447): 0 Heap Size onSurfaceCreated : 4815360
11-02 16:33:40.769: D/DEBUG(1447): 210003 -> 1 Heap Size onSurfaceCreated : 4945952
11-02 16:33:40.898: D/DEBUG(1447): 2 Heap Size onSurfaceCreated : 5499224
11-02 16:33:40.902: D/DEBUG(1447): 3 Heap Size onSurfaceCreated : 5499224
11-02 16:33:40.906: D/DEBUG(1447): 4Heap Size onSurfaceCreated : 5499224
11-02 16:33:40.906: D/DEBUG1(1447): onSurfaceChanged
11-02 16:33:42.175: D/DEBUG(1447): Heap Size Before release : 5079800
11-02 16:33:42.277: D/DEBUG(1447): Heap Size After release : 4812984
11-02 16:33:44.816: D/DEBUG1(1447): onSurfaceCreated : com.google.android.gles_jni.EGLConfigImpl@40a225e0
11-02 16:33:44.820: D/DEBUG(1447): 0 Heap Size onSurfaceCreated : 4822104
11-02 16:33:45.050: D/DEBUG(1447): 210003 -> 1 Heap Size onSurfaceCreated : 4952368
11-02 16:33:45.062: D/DEBUG(1447): 2 Heap Size onSurfaceCreated : 5520736
11-02 16:33:45.062: D/DEBUG(1447): 3 Heap Size onSurfaceCreated : 5520736
11-02 16:33:45.066: D/DEBUG(1447): 4Heap Size onSurfaceCreated : 5520736
11-02 16:33:45.066: D/DEBUG1(1447): onSurfaceChanged
11-02 16:33:45.964: D/DEBUG(1447): Heap Size Before release : 5101336
11-02 16:33:46.054: D/DEBUG(1447): Heap Size After release : 4817536
메모리 사용량의 변화가 적은 것을 알 수 있습니다.
현재 5000byte 정도가... 남은 것 같네요;;
열심히 또 어디에서 메모리를 먹고 있는지 확인해볼까 합니다..^^;;;
오늘도 화이링!!! ㅋ
'나의 플랫폼 > 안드로이드' 카테고리의 다른 글
[Android Opengl es 2.0 ] 여러 Object를 한 번에 그리기. (4) | 2011.11.07 |
---|---|
[ Android Opengl es 2.0 ] java.lang.IllegalArgumentException (0) | 2011.11.03 |
[Android Opengl es 2.0 ] Texture Setting. (2) | 2011.11.02 |
[ Android Opengl es 2.0 ] 화면 전체 이동 및 회전 (2) | 2011.10.26 |
[ Android Opengl es 2.0 ] Blur 효과 (10) | 2011.10.25 |