일반 사용자보다는 개발자분들이 더 잘 아실꺼 같아서 이곳에 질문드립니다.

필수어플로 task killer 등의 메모리 관리 혹은 프로세스 관리 어플들을 많이 사용합니다.

실제적으로 저는 암만 관리를 한다고 하더라도 부팅후 몇시간만 지나면 금방 50~80메가를 와따리 가따리 하는데요..
이상하게도 프로세스 죽이는 유틸로 열심히 지워봐도 메모리의 증가는 초기 부팅시에 170메가에 비하면 턱없이 부족하기만한
50~80메가네요..

근데 이해 안가는 부분이 재부팅을 안하고도 어느 순간 보면 100메가 가까이 확보 되기도 하고...
어느순간 보면 많은 어플들이 로딩되어 있음에도 불구하고 100메가 가까운 가용 메모리가 확보되기도 합니다.

es 작업 관리자로 볼경우 실행시키고 종료한 어플들은 모두 empty 라고 표시되면서 그대로 표시되는 점을 발견할 수 있는데요..
이점을 가지고 안드로이드 운영체제단의 메모리 관리 원리를 몇가지 추측해 봤습니다.

1. 어플의 상태는 서비스를 제외하고는 크게 background, foreground, empty 상태로 나뉜다.
2. background는 어플이 종료되지 않고 쓰레도 뒤에서 돌고 있으며 foreground는 활성화된 프로세스이다.
3. empty는 종료는 되었지만 메모리의 즉각적인 해제는 되지 않고 있으며, stack에 남겨놓고 있다가 메모리가 부족할시 garbage collector 비스무리 한 것이 주기적으로 메모리를 릴리즈 해준다.
4. empty 로 남아있는 찌꺼기 어플들들은 해당 어플들이 재실행 될 때 빠르게 로딩될 수 있도록 한다.(캐쉬메모리와 유사한 기능)
5. 결론적으로 종료후에서 필요없이 background로 돌아가는 어플들을 제외하면 굳이 task를 kill 필요가 없다...
6. 5번과 이어서 안드로이드의 성능은 메모리보다는 cpu사용률 혹은 lock에 의한 버벅거림이 좌우한다(?)

대략 이런 결론에 이르는데 제가 생각하는게 맞나요?

이게 아니면 empty 상태로 장시간 두었을 때 또 남아있는 어플이 아닌 이것저것 다른 어플들을 실행시켰을 때 메모리가 더 줄어들어야 하는데
오히려 늘어나는 경우가 생기거든요..

도대체 운영체제단의 메모리 관리는 어떻게 이루어지는지 속시원히 답변좀 부탁드립니다.