안드로이드 개발 질문/답변
(글 수 45,052)
메모리 사용량이 좀 많은 게임을 만들었는데요, (사운드파일 100여개 이미지파일 100여개)
게임은 문제없이 동작하는데,
게임을 끄자마자 다시 아이콘을 터치하여 실행하면 다운됩니다.;
끈 다음
약간의 시간(5초가량) 을 두고
시작하면 문제가 없구요..
같은 원리로 게임 내부에서 자체적으로 재시작 기능을 만들어 두었는데,
이걸 써도 다운돼 버리네요.
(디버그모드로 보면 게임 시작부분 서페이스뷰에서 특정 이미지를 비트맵팩토리로 로딩해오는 부분에서 멎습니다.)
재시작 부분에 혹시나해서
System.gc();
도 넣어봤지만 똑같은 문제가 생기네요 ㅠㅠ..
메모리를 해제하는데 걸리는 시간이 필요하기 때문일까요..?
이런 비슷한 문제를 해결하기 위해선 어떤 정보들을 봐야 하는지 조언 부탁드려요 ㅠㅠ..
게임은 문제없이 동작하는데,
게임을 끄자마자 다시 아이콘을 터치하여 실행하면 다운됩니다.;
끈 다음
약간의 시간(5초가량) 을 두고
시작하면 문제가 없구요..
같은 원리로 게임 내부에서 자체적으로 재시작 기능을 만들어 두었는데,
이걸 써도 다운돼 버리네요.
(디버그모드로 보면 게임 시작부분 서페이스뷰에서 특정 이미지를 비트맵팩토리로 로딩해오는 부분에서 멎습니다.)
재시작 부분에 혹시나해서
System.gc();
도 넣어봤지만 똑같은 문제가 생기네요 ㅠㅠ..
메모리를 해제하는데 걸리는 시간이 필요하기 때문일까요..?
이런 비슷한 문제를 해결하기 위해선 어떤 정보들을 봐야 하는지 조언 부탁드려요 ㅠㅠ..
2010.09.08 17:22:05
1. 리사이클...
2. 속도향상을 위해 이미지를 로딩해두는 과정에서 힙 용량초과
- 이거 같은 경우는 BitmapPool을 직접 만드셔서 해결하셔야 할겁니다.
3. 이미지 하나가 너무 크다.
- 이 경우는 어차피 단말 해상도에 한계가 있으니 애초에 로딩할때 sampleSize를 잘 정해서 로딩하시면 됩니다.
2. 속도향상을 위해 이미지를 로딩해두는 과정에서 힙 용량초과
- 이거 같은 경우는 BitmapPool을 직접 만드셔서 해결하셔야 할겁니다.
3. 이미지 하나가 너무 크다.
- 이 경우는 어차피 단말 해상도에 한계가 있으니 애초에 로딩할때 sampleSize를 잘 정해서 로딩하시면 됩니다.
비트맵을 갖고온 클래스 자체를 null 로 죽여버리면
그 클래스가 갖고있던(=비트맵팩토리로 로드해왔던) 비트맵들은 자동으로 recycle 되지 않나요..?