지하철이나 버스에서 아이폰을 사용하는 사람들을 많이 보면서 아이폰이 정말 많이 팔리기는 팔렸나보다 하는 생각이 들었다. 그런데, 최근 아이폰을 사용하는 사람을 보니 어플 실행시키고 이거저거 하다가 마지막에 슬립시키기 전에 홈버튼 두번 누르고 히스토리를 길게 눌러서 실행중인 어플을 종료시키고 슬립시키는 경우를 몇번이나 봤다. 슬립시키기 전에 실행중인 어플을 항상 종료시키는지 홈버튼을 두번 눌러 나온 히스토리에 프로그램이 하나도 떠있지 않았다. 카카오톡이나 문자메시지, 심지어 전화까지 확실히 삭제시키는 모습을 자주 보았다. 그래서 메모리 관리에 대해 간단히 써보고자 한다.

애플 제품의 메모리관리의 기본은 OS에게 맡겨두라는 것이다. 애플 제품은 보통 빈 메모리가 있으면 계속 메모리에 프로그램을 올려서 실행하고 빈 메모리가 없으면 오랫동안 사용하지 않은것부터 종료시키거나 메모리를 비우는 방식을 사용한다.

좀더 자세히 살펴보면, 애플의 메모리는 크게 4가지로 분류된다.
1. Free : 이건 비어있는 메모리이다. 프로그램이나 데이터가 바로 로드될 수 있는 영역이다.
2. Active : 이부분은 최근에 읽히거나 사용된적이 있는 메모리이다.
3. Inactive : 이부분은 내용은 들어있지만 최근에 읽히거나 사용된적이 없는 메모리이다.
4. Wired : 이부분은 절대로 내려가지 않는 메모리이다. 주로 OS 등이 들어있다.

처음에 프로그램이 시동되면 Fee 영역에 올라가고 실행된다. 하지만 Free 영역에 빈 공간이 없다면, Inactive 공간에서 오래된 부분을 삭제하고 (프로그램을 종료시키고, 어차피 실행시키는 중이 아니다.) 그 공간에 올려서 실행시킨다. iOS나 OSX나 동일하다. 둘 모두 커널은 같은 종류를 사용하니 다를 이유가 없다. 즉 아이폰이나 아이패드에서 굳이 히스토리를 불러와서 종료시킬 필요가 없다. 맥에서도 프로그램을 종료시켜도 바로 Free로 내려가지 않고 여전히 메모리에 내용을 저장해두고 Inactive로 놔둔다. 그래야 다음에 같은 프로그램을 다시 실행시킬때 메모리에 있는 내용은 남겨두고 나머지만 로드하다보니 더 빨리 로드된다.

혹시 메모리가 사용하는 전력을 아끼기 위해서 일일이 종료시킨다면.. 효율도 별로 없는 일에 시간을 투자하는것이라 말하고 싶다. 프로그램 종료시키는 시간동안 화면 켜져있고, 다시 프로그램 실행시킬때 걸리는 시간과 I/O에 사용되는 전력 등을 고려하면 그다지 효율적이지 않을것이다. (정확히 측정이나 계산해보지는 않았지만..)

 즉 애플 제품은 사용자가 굳이 메모리에 대해 열심히 신경 쓸 필요가 없다. 귀찮게 일일이 종료시키지 말고 그냥 편하게 사용하는것이 정신 건강에도 좋고 손가락도 편하고 아이폰도 편하다.