안녕하세요.
Heap 메모리에 대해서 질문이 있는데요.
겔럭시 S의 경우 Heap 이 28mb 정도로 알고 있습니다.
이것은 순수하게 Java 에서 Bitmap이나 기타 등등 메모리에 올릴수 있는 메모리 자나요.
그런데 RPG 게임 같은 경우 이 Heap 메모리로 제작이 가능 한지.. 의심이 들기 시작 하구요.
사실 프로젝트 개발을 해 보면.. 정말 Heap 에 대해서 많은 고민을 하게 되고, 내가 모르는게 있나.. 하는 생각도 들어서
이곳 저곳 검색도 해 봅니다.
Ndk 를 사용 하면.. 힙이 더 늘어 난다는 이야기도 있구요...
Heap 에 대한 제한을 해제 할수 있다는 말두 있구요..
480x800 사이즈의 이미지 하나만 올려도 Heap 이 1메가 정도씩 잡아 버리는데..
대체 어떻게 이런 저런 많은 효과들을 뿌려 지게 되는 건지... 정말 궁금 합니다.
Heap 메모리... 이건 정말 어떻게 해볼 방법이 없는 건가요???
혹 OpenGl 을 사용 할 경우 Heap 이 더 늘어 나거나 처리 방법이 더 있는 건가요????
Ndk 를 사용 하게 되면.. 더 늘어 나는 건가요???
답변 감사합니다. (__ 꾸벅
그렇다면... 겔럭시 S 가 힙메모리가 28메가 정도 되는 걸로 알고 있습니다. 이 28메가 안에서 RPG 같은 화면에 보여지는게 많은 게임들이 나온다는 건가요?? (480x800 사이즈의 이미지를 한장 불러 오는데... 대략 heap 이 1메가 조금 넘게 먹는거 같습니다.)
그리고 OpenGl 에서는 이미지를 위한 가상메모리가 100mb 정도 지원을 한다고 합니다.. 일반 SurfaceView 로 개발 하는거와 엄청난..메모리 차이가 나는 건데요.. 이게 사실 인가요???




비트맵의 경우 가장큰 부분(픽셀 정보)은 네이티브 힙 영역으로 들어갑니다.
이곳은 일반적인 힙보다 조금더 큰 별도의 영역입니다.
NDK사용하면 더 늘어나거나 이런것은 없지만 아무래도 네이티브힙을 쓰다보면 커진거같은 느낌을 받을수는 있습니다.
하지만 자바쪽에서도 일부 클래스는 네이티브 영역을 활용하는 경우가 많다보니 이것저것 하다보면 크게 다르지 않습니다.
(어차피 비교적 덩치가 큰것들은 대체로 네이티브 힙을 사용하고 이것도 제한은 자바 힙보다는 크지만 PC같이 아주 크게 쓸수는 없습니다.)
결론적으로 메모리 관리를 철저하게 하는것외에 답은 없습니다.
NDK를 사용하면 아무래도 수동 관리다보니 그리고 메모리 관리 조금만 안되도 바로 크래시가 나니까
이들을 고치다보면 메모리 관리가 어느정도 잘되고 하다보니 메모리가 커보인다는 느낌을 받는것일수도 있습니다.