2008/11/20 10:37
메모리 청소는 없다
사람들이 컴퓨터 '청소'에 대한 믿음은 마치 건강정보를 접하는 것과 비슷합니다. 검증되지 않은 정보와 건강식품들이 넘쳐나지만 사람들은 별 의심 없이 이런 정보를 신뢰하고 건강식품을 먹곤 합니다. 그게 '자기 입'으로 들어가 '자기 몸'에 영향을 미치는 것인데도 말입니다. 컴퓨터도 마찬가지인데, 어디서 검증되지도 않았고, 정확히 뭘 하는지 알 수도 없는 이상한 '시스템 클린' 프로그램들을 잘도 자기 시스템에 설치하곤 합니다. 지난번에는 레지스트리 청소기에 대한 이야기를 했는데, 오늘은 메모리 청소기에 대한 이야기를 할 작정입니다.
구글에서 '메모리 청소'라는 검색어로 한번 검색해봤습니다. 수많은 프로그램 소개 글이 나타납니다. 대강 훑어봤는데, 처음 몇 페이지 안에 적어도 10여개의 프로그램들이 소개되어 있습니다. 글의 주요 내용은 프로그램을 오래 돌리면 메모리 누수가 일어나고, 메모리 청소 프로그램을 돌려 메모리 누수를 해결할 수 있다는 내용입니다.
실제로 프로그램을 돌리기 전과 후의 메모리 사용량이 완전히 달랐습니다. 어떤 프로그램은 메모리 청소 프로그램을 돌리기 전에는 수백메가의 메모리를 점유하고 있었는데, 순식간에 몇십 메가를 점유하고 있었습니다. 어떤 블로그에서는 메모리 청소 프로그램을 스케줄러에 넣어 두고 주기적으로 실행한다고 합니다. 이래서야 프로그래머들이 머리를 쥐어짜며 메모리 누수를 막을 필요가 별로 없을 것 같습니다.
하지만 상식적으로 '낭비되는 메모리'나, '누수 되는 메모리'를 구분할 수 있다는 것도 좀 이상하고, 다른 프로그램이 사용하는 메모리 영역을 멋대로 건드려 사용량을 줄인다는 것은 이상하기 짝이 없습니다. 전자야 뭐 코드의 어디서도 더이상 참조하지 않는 영역을 구분할 수 있을 겁니다. 하지만 후자는 바이러스가 주로 하는 행동입니다. 또 운영체제에서 다른 프로그램이 사용중인 메모리 영역을 침범하면 알아서 에러를 내 주기도 하지요. 하지만 위에 이야기했듯 메모리 청소 프로그램을 소개하는 글을 보면 정말 메모리 사용량이 줄어듭니다. 그래서 이 프로그램들이 뭘 하는지 한번 깔아봤습니다.
저는 컴퓨터를 도통 끄지 않기 때문에 한 프로그램이 며칠씩 돌아갑니다. 아웃룩 같은 건 컴퓨터를 재시작 하기 전에는 계속해서 돌고 있는데, 그러다 보면 아웃룩 혼자 수 기가의 메모리를 점유하기도 합니다. 그래서 제가 하는 일은 가끔가다 아웃룩을 종료했다가 다시 실행하는 것입니다. 그러면 메모리 사용량이 정상으로 돌아오지요. 하지만 메모리 청소 프로그램을 돌리면 아웃룩을 종료하지 않고서도 메모리를 확보할 수 있지 않을까요?

메모리 청소 프로그램이 무슨 일을 했는지 이 그림을 보세요. 아웃룩이 한 700메가 정도를 차지하고 있었는데, 프로그램을 돌리자 고작 4.7메가로 줄어들었습니다! 대단하네요. 아웃룩이 고작 4메가 메모리로 구동되다니요. 하지만 VM 사용량을 보니 이건 좀 이상합니다. 분명 방금전까지 아웃룩이 사용하던 메모리 사용량은 줄어들었지만 VM 사용량은 그대로입니다. 아웃룩 뿐만이 아니라 장시간 실행해놓는 메신저, 엑셀, 원노트 등의 모든 프로그램이 메모리 사용량은 줄어들었지만 VM 사용량은 훨씬 늘어났습니다.
아. 메모리 사용량이 줄어드는 원리는 꽤 간단했습니다. 지금 프로그램들이 사용 중인 메모리를 모드 페이지 파일로 돌리는 거였네요. 그래서 메모리 사용량이 줄어든 것처럼 보이고, 실제로 새로 실행하는 프로그램의 구동속도도 빨라집니다. 하지만 기존에 실행 중이던 프로그램은 퍼포먼스에 상당한 타격을 입게 됩니다. 고작 메모리를 4메가만 사용하고 있던 아웃룩을 태스크바에서 다시 끄집어내자 시스템이 거의 멎어버렸습니다. VM이 막 줄어들고 메모리 사용량이 수백 메가가 되고 나서야 아웃룩을 조작할 수 있었습니다. 아웃룩을 종료했더니 꺼지질 않습니다. 또 슬금슬금 VM 사이즈가 줄어들고 메모리 사용량이 한참을 증가하고 나서야 종료됩니다.
정리하면, 메모리 청소 프로그램이 하는 일은 메모리 사용량이 많은 프로그램이 사용 중인 메모리 공간을 페이지 파일로 옮기는 것입니다. 시스템이 꽤 느려져서 새로 포토샵을 실행하기 두렵다면 도움이 되겠지만, 기존에 실행 중이던 프로그램은 더 느려집니다. 사람들이 이야기하는 것처럼 사용되지 않는 메모리를 '청소'해서 기적처럼 수백메가씩 메모리를 퍼 쓰던 프로그램이 순식간에 고작 몇 메가만 점유하도록 하는 그런 놀라운 일은 없습니다.
그냥 프로그램이 평소보다 많은 메모리를 사용하고 있고, 덕분에 시스템이 느려졌다면 그냥 그 프로그램을 껐다 켜면 됩니다. 굳이 메모리 청소 프로그램 같은 걸로 눈가림 할 필요 없습니다.
