안드로이드의 메모리 영역에 대해 뭔가 개념이 섞인 것 같아, 정리 차원에서 글 써봅니다.
root explorer 같은 걸로 안드로이드 최상위 경로를 탐색해보시거나, 롬을 밀면서 flashing 툴 같은 걸 써보시면 대략적인 파일 시스템 구조를 알 수 있으실텐데.. 기기에 따라 조금씩 다를 수 있지만 필수적인 경로는 아래와 같습니다.
/
/cache
/data
/data
/app
/dalvik-cache
/sdcard
/system
/app
/fonts
들여쓰기가 된 영역은 /data/data 와 같이, /data 폴더 아래에 존재하는 폴더란 의미입니다.
기본적인 안드로이드의 구조에서, cache, data, sdcard, system은 서로 다른 파티션 영역으로 마운트 됩니다. 쉽게 말해 컴퓨터의 C, D, E드라이브로 나뉘어 있는것처럼 생각하시면 되구요.
이중 /sdcard 는, 외장메모리 장착시 해당 파일들이 보이게 되는 경로이며, 큰 용량의 데이터나 자료 저장 용도로 쓰게 되어있습니다. 이동식디스크 모드로 컴퓨터와 연결시 보이는 파일들이 있는 영역도 바로 이 영역이구요. 대게 이 영역은 micro sd카드 장착시 활성화되는데, 갤스 시리즈나 최근의 안드로이드 폰들은 미리 8~16기가 이상의 플래쉬메모리를 내장시켜서 /sdcard 에 마운트를 시켜두었죠. 이 경우 그럼 메모리 슬롯에 추가로 micro sd를 꽂을 경우엔 경로가 어디가 될지가 문제가 되는데, 갤럭시 시리즈의 경우 /sdcard/external_sd와 같은 이름으로 마운트가 됩니다.
Kies에서 보이는 내장, 와장 메모리라는 건 바로 저 sdcard와 sdcard/external_sd 영역입니다. 둘다 역할은 거기서 거기고.. 실제 어플이 설치되는 장소는 저곳이 아니죠. 여기가 꽉 차더라도 그냥 데이터용 하드에 자료 꽉채운 거나 다름없기에, 시스템이 느려지거나 하진 않습니다. 대부분 말이죠..
/system은 read only 영역으로서, 폰을 초기화하더라도 남는 파일들이 저장되는 곳입니다. 롬업데이트를 하면 바로 이 영역의 파일들이 교체되죠. 시스템에 내장된 번들앱들은 /system/app 밑에 저장되며, 글꼴은 /system/font 밑에 저장되고, 루팅을 하게 되면 이 영역을 read write 영역으로 바꿀 수 있기에 번들 앱 삭제, 폰트 변경 등이 가능하게 됩니다. system 영역을 통째로 갈아엎어서 커스텀롬을 이용할 수도 있구요.
/cache는 주로 마켓에서 어플을 설치할때, 다운 하는 동안 해당 파일들이 저장되는 임시 경로로서 사용됩니다. 여긴 거의 임시 영역이라 그냥 가끔식 통째로 wipe를 해버려도 무방합니다.
/data는 사실상 안드로이드 폰에서 가장 중요한 영역입니다. 사용자가 설치한 어플 등, 거의 모든 실제 데이터가 저장되는 곳이죠.. 어플들은 /data/app에 저장되며, 해당 어플이 사용하는 데이터들은 /data/data에 저장되고, 어플들의 실행을 위해 dalvik-cache라는 캐쉬가 생성되는데 해당 파일들은 /data/dalvik-cache라는 곳에 저장됩니다. 어플 설치시 메모리 부족 에러가 계속 뜬다면 바로 이 영역이 모자라서입니다. 물론 매우 용량이 큰 데이터의 경우 /data/data가 아닌 /sdcard 밑에 데이터를 저장해서 쓰게 만들어지기도 하죠. 아무튼 이런 데이터들 때문에, 실제 어플 설치 후 이것저것 계속해서 실행하다 보면 어플 설치 직후의 여유공간보다도 점점 더 여유 공간이 줄어들게 됩니다. 대표적으로 웹브라우징 같은 걸 많이 해도 /data 의 여유공간이 팍팍 줄어들죠.. /data 영역의 남은 용량은 '설정'-'애플리케이션'에서 볼 수 있습니다. 이 영역은 프로그랭 실행을 위해 잦은 입출력이 필요하기에, 대게의 경우 /sdcard에 사용되는 플래쉬디스크보다 더 빠를 저장매체가 쓰입니다. 대신 용량은 512MB~1GB 정도로 작은 편이구요.
지금 메모리가 풀이 나서 어플이 죽는다고 하시는데, 거기에 관여하는 메모리는 이런 저장메모리 공간이 아니라 아마 ram영역일듯한데요.. ram이 모자란 경우는 다른 방법 없습니다. task 관리자 어플 같은걸로, 무슨 어플이 계속 실행중인지 체크해보고 안쓰는 건 삭제를 하는 수밖에 없죠. 혹은 task 관리자로 kill all을 가끔씩 해줘도 되는데, 이건 사용 잘못하면 오히려 더 느려지는 경우도 있으니 관련 강좌 잘 찾아보시기 바랍니다. 가능한 어플들은 다이어트해서 쓰는게 좋죠. 좀 고급테크닉으로는 AutoStarts를 쓰는 방법도 있으며, 이것도 강좌 찾아보면 많이 나옵니다. 루팅 필수구요..
만약 /data 영역이 모자라서 에러가 나는 거라면, app2sd라는 걸 이용하면 됩니다. /data/app 에 저장되는 파일들을 용량면에서 더 큰 공간인 /sdcard로 이동시키는 기능으로, 프로요 이상의 안드로이드에선 기본적으로 지원하는 기능입니다. 이렇게 이동한 어플은 위젯으로는 사용할 수 없게 됩니다.
그 외에 루팅후에만 가능한 app2sd도 있는데, 이건 리눅스 좀 써보신 분이라면 쉽게 아시겠지만, 아예 micro sd에서 일부 영역을 리눅스 파티션으로 포맷해버리고 해당 영역을 /data/data로 symbolic link를 만들거나 마운트를 시켜버려서, 마치 내장 메모리가 된 것처럼 쓰는 기법이죠.. 모토로이 같이 내장 메모리 x만한 기기에서 흔히 쓰는 기법이구요. 어플 저장 공간을 통째로 옮기기에 용량은 대폭 늘릴 수 있지만, 성능 면에선 좀 손해를 보게 됩니다. 이 방법은 안드로이드가 정식으로 제공하는 app2sd와 달리 위젯 사용에 대한 제약 같은 건 없구요.
아무튼 질문이 좀 명확하지 않은데요, 지금처럼 sdcard 영역 공간을 확보하는 건 문제 해결에 큰 도움이 못될 거라 생각합니다. 원래도 1기가 이상은 남으셨으니.. 네비를 쓰실 거라면 해당 데이터 다시 복사하시고, 동영상, 음악 등의 데이터만 /sdcard/external_sd에 옮기시길 추천합니다.
램이 모자라다면 위에 쓴 것처럼 메모리에 상주하는 쓸데없는 어플 제거와 태스크 킬러 등을 써보시고, data 영역의 공간이 부족한 거라면 '설정'-'애플리케이션'에서 크기순으로 정렬하신 후, 안드로이드 기본 app2sd로 큰것부터 차례로 이동시키고 써보세요..
정리 안된 글 죄송합니다. 도움이 되시면 좋겠네요.
<iframe frameborder="0" scrolling="yes" style="width: 100%; height: 100%; background-color: rgb(255, 255, 255); "></iframe>