마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

Runtime.getRuntime().maxMemory()에 대한 질문입니다.

0 추천

안녕하세요.

이미지 갤러리 같은 기능을 만들다보니 메모리 쪽에 궁금한 점이 많아서 질문좀 드리고 싶어서 왔습니다.

 

http://developer.android.com/reference/java/lang/Runtime.html#totalMemory()

디벨로퍼 사이트에서 짧게 나온 설명을 보자니... 짧은 영어로 이해하자면

totalMemory는 현재 힙에 할당된 메모리이고

maxMemory는 힙이 획장될수잇는 최대 메모리이고.

freeMemory는 현재 사용가능한 메모리가 맞나요?

 

1. 제가 이해한게 맞다면 제 폰(노트1) 메모리를 찍어봤는데 이렇게 나왔거든요.

total : 13059Kb / 12Mb

max : 65536Kb / 64Mb

free : 261kb / 0Mb

freeMemory가 261kb인 이유가 무엇일까요?ㅜㅜ

공기계 폰에 연결해보니 8mb 정도는 나오던데 말이지요..

힙메모리는 애플리케이션마다 할당되는걸로 알고있었는데 그게 아닌건지....

 

이 상태에서 예를들어 1MB짜리 이미지를 로딩한다면 메모리 공간이 부족하니

힙이 확장되어서 공간을 만드는건가요?

 

메모리 개념이 부족해 질문 드립니다.

아 메모리의 세계란 어렵네요 ㅠㅠ 답변 부탁 드립니다.

ire (3,900 포인트) 님이 2013년 11월 15일 질문

1개의 답변

0 추천
 
채택된 답변
totalMemory는 현재 힙에 할당된 총 메모리 크기

maxMemory는 최대로 할당될 수 있는 메모리 크기

freeMemory는 현재 할당된 힙 메모리 중 사용가능한 크기

 

생각하신 게 맞습니다.

시스템에서는 처음 부터 앱에 최대의 힙 메모리를 할당하지 않습니다.

처음에는 디폴트 값으로 할당하죠.

그러다가 앱에서 힙메모리를 계속 사용하면 힙 메모리를 더 할당해 줍니다.

하지만 최대 값을 넘지 못하기 때문에 계속 메모리를 사용하면 OOM이 발생하겠죠.
원조안드로이드 (58,190 포인트) 님이 2013년 11월 15일 답변
ire님이 2013년 11월 15일 채택됨
빠른답변 감사합니다.
그렇다면 OOM이 발생하는것은 maxMemory까지 할당이 되었고, 그 이상의 메모리를 사용하려고 하기 때문에 발생하는것이 맞나요? 보통 앱을 제작할때 maxMemory을 기준으로 만드는지 아니면 totalMemory 기준으로 만드는지 혹시 알수 있을까요?
맥스요..........
...