메모리 청소는 없다

사람들이 컴퓨터 '청소'에 대한 믿음은 마치 건강정보를 접하는 것과 비슷합니다. 검증되지 않은 정보와 건강식품들이 넘쳐나지만 사람들은 별 의심 없이 이런 정보를 신뢰하고 건강식품을 먹곤 합니다. 그게 '자기 입'으로 들어가 '자기 몸'에 영향을 미치는 것인데도 말입니다. 컴퓨터도 마찬가지인데, 어디서 검증되지도 않았고, 정확히 뭘 하는지 알 수도 없는 이상한 '시스템 클린' 프로그램들을 잘도 자기 시스템에 설치하곤 합니다. 지난번에는 레지스트리 청소기에 대한 이야기를 했는데, 오늘은 메모리 청소기에 대한 이야기를 할 작정입니다.

구글에서 '메모리 청소'라는 검색어로 한번 검색해봤습니다. 수많은 프로그램 소개 글이 나타납니다. 대강 훑어봤는데, 처음 몇 페이지 안에 적어도 10여개의 프로그램들이 소개되어 있습니다. 글의 주요 내용은 프로그램을 오래 돌리면 메모리 누수가 일어나고, 메모리 청소 프로그램을 돌려 메모리 누수를 해결할 수 있다는 내용입니다.

실제로 프로그램을 돌리기 전과 후의 메모리 사용량이 완전히 달랐습니다. 어떤 프로그램은 메모리 청소 프로그램을 돌리기 전에는 수백메가의 메모리를 점유하고 있었는데, 순식간에 몇십 메가를 점유하고 있었습니다. 어떤 블로그에서는 메모리 청소 프로그램을 스케줄러에 넣어 두고 주기적으로 실행한다고 합니다. 이래서야 프로그래머들이 머리를 쥐어짜며 메모리 누수를 막을 필요가 별로 없을 것 같습니다.

하지만 상식적으로 '낭비되는 메모리'나, '누수 되는 메모리'를 구분할 수 있다는 것도 좀 이상하고, 다른 프로그램이 사용하는 메모리 영역을 멋대로 건드려 사용량을 줄인다는 것은 이상하기 짝이 없습니다. 전자야 뭐 코드의 어디서도 더이상 참조하지 않는 영역을 구분할 수 있을 겁니다. 하지만 후자는 바이러스가 주로 하는 행동입니다. 또 운영체제에서 다른 프로그램이 사용중인 메모리 영역을 침범하면 알아서 에러를 내 주기도 하지요. 하지만 위에 이야기했듯 메모리 청소 프로그램을 소개하는 글을 보면 정말 메모리 사용량이 줄어듭니다. 그래서 이 프로그램들이 뭘 하는지 한번 깔아봤습니다.

저는 컴퓨터를 도통 끄지 않기 때문에 한 프로그램이 며칠씩 돌아갑니다. 아웃룩 같은 건 컴퓨터를 재시작 하기 전에는 계속해서 돌고 있는데, 그러다 보면 아웃룩 혼자 수 기가의 메모리를 점유하기도 합니다. 그래서 제가 하는 일은 가끔가다 아웃룩을 종료했다가 다시 실행하는 것입니다. 그러면 메모리 사용량이 정상으로 돌아오지요. 하지만 메모리 청소 프로그램을 돌리면 아웃룩을 종료하지 않고서도 메모리를 확보할 수 있지 않을까요?

memory

메모리 청소 프로그램이 무슨 일을 했는지 이 그림을 보세요. 아웃룩이 한 700메가 정도를 차지하고 있었는데, 프로그램을 돌리자 고작 4.7메가로 줄어들었습니다! 대단하네요. 아웃룩이 고작 4메가 메모리로 구동되다니요. 하지만 VM 사용량을 보니 이건 좀 이상합니다. 분명 방금전까지 아웃룩이 사용하던 메모리 사용량은 줄어들었지만 VM 사용량은 그대로입니다. 아웃룩 뿐만이 아니라 장시간 실행해놓는 메신저, 엑셀, 원노트 등의 모든 프로그램이 메모리 사용량은 줄어들었지만 VM 사용량은 훨씬 늘어났습니다.

아. 메모리 사용량이 줄어드는 원리는 꽤 간단했습니다. 지금 프로그램들이 사용 중인 메모리를 모드 페이지 파일로 돌리는 거였네요. 그래서 메모리 사용량이 줄어든 것처럼 보이고, 실제로 새로 실행하는 프로그램의 구동속도도 빨라집니다. 하지만 기존에 실행 중이던 프로그램은 퍼포먼스에 상당한 타격을 입게 됩니다. 고작 메모리를 4메가만 사용하고 있던 아웃룩을 태스크바에서 다시 끄집어내자 시스템이 거의 멎어버렸습니다. VM이 막 줄어들고 메모리 사용량이 수백 메가가 되고 나서야 아웃룩을 조작할 수 있었습니다. 아웃룩을 종료했더니 꺼지질 않습니다. 또 슬금슬금 VM 사이즈가 줄어들고 메모리 사용량이 한참을 증가하고 나서야 종료됩니다.

정리하면, 메모리 청소 프로그램이 하는 일은 메모리 사용량이 많은 프로그램이 사용 중인 메모리 공간을 페이지 파일로 옮기는 것입니다. 시스템이 꽤 느려져서 새로 포토샵을 실행하기 두렵다면 도움이 되겠지만, 기존에 실행 중이던 프로그램은 더 느려집니다. 사람들이 이야기하는 것처럼 사용되지 않는 메모리를 '청소'해서 기적처럼 수백메가씩 메모리를 퍼 쓰던 프로그램이 순식간에 고작 몇 메가만 점유하도록 하는 그런 놀라운 일은 없습니다.

그냥 프로그램이 평소보다 많은 메모리를 사용하고 있고, 덕분에 시스템이 느려졌다면 그냥 그 프로그램을 껐다 켜면 됩니다. 굳이 메모리 청소 프로그램 같은 걸로 눈가림 할 필요 없습니다.

2008/11/20 10:37 2008/11/20 10:37

,

트랙백

답글

  • 아크몬드 | 2008/11/20 13:06 | 답글 | 수정

    저도 불필요한(?) 최적화 프로그램들은 최대한 자제하고 있습니다. 최적화 이후 오히려 이전보다 느려진 속도에 절망한 적이 한두 번이 아니거든요.
    오래간만에 밀피유님 블로그 들려서, 발도장 찍고 갑니다.

  • 답글: Milfy | 2008/11/26 13:37 | 답글 | 수정

    어서오세요. :) 분명 메모리 최적화라는 개념이 있을 것 같긴 한데, 이런 건 아니라고 생각해요. ㅠ_ㅠ 새로 프로그램을 실행하는데는 효과적이긴 하지만, 어쩐지 눈속임인 것 같은 기분이 들기도 하고요.

  • aromi | 2008/11/20 13:12 | 답글 | 수정

    옜날에 메모리 데이터를 실시간 압축해서 2배로 쓰게 해준다는 램더블러라던지 리소스를 압축해 준다는 소프트램 같은게 생각나네요. 이 프로그램들의 마지막은 좀 안좋았는데, 정밀하게 분석해 보니 메모리만 차지할 뿐 아무런 기능도 하지 않았다고 하더군요. 기능이라면 사용자를 속이는 기능 정도?
    윈도9x라면 모를까 NT커널은 페이징과 메모리 재배치를 통해 스스로 항상 정리하고 청소하고 있으니까요. 메모리가 늘어나려면 프로그램에서 메모리를 해제하고 OS가 회수한 메모리를 완전히 풀어야 하는데(프로그램이 반환했다고 OS가 즉시 사용가능으로 바꾸지는 않습니다. 재할당을 대비해서 일정 시간 예약 상태로 두죠.) 그런 작업 없이 프로그램 크기를 줄여준다니까 사기죠.

  • 답글: Milfy | 2008/11/26 13:38 | 답글 | 수정

    얼마전에 읽은 초난감 기업의 조건에 램드라이브 이야기가 나왔었어요. :) 조금만 생각하면 지하철 송풍구 발전기만큼이나 말도 안 되는 소리인데, 의외로 사람들을 속이는 건 어렵지 않은가봐요.

  • 무혼인형 | 2008/11/20 15:19 | 답글 | 수정

    FF3의 메모리 누수(?) 문제로 SmartRAM이란 프로그램을 추천하는글을 쓴 적이 있었는데 제 글도 보셨을 것 같네요. 그 이후로 계속 관찰 해 본 결과 현재 백그라운드에 열려있던 프로세스로 다시 전환할 때 엄청난 부하가 걸리는 것을 보고 스스로 사용을 포기했는데 추천을 중단하는 수정글을 올려야 하는데 차일 피일 미루다보니 귀찮아서 큰일이네요 ;

  • 답글: Milfy | 2008/11/26 13:38 | 답글 | 수정

    위 스크린샷이 스마트램이 한 일입니다.

  • 두아쓰 | 2008/11/30 20:19 | 답글 | 수정

    저도 메모리 청소해준다는 프로그램은 잘 안쓰는데, 메모리 점유율이 높다 싶으면 종료도 안하고 그냥 최소화 버튼만 눌러버립니다;;

  • 답글: Milfy | 2008/12/03 10:52 | 답글 | 수정

    생각해보니 비슷한 일을 하는 프로그램이 서버에서 장시간 구동되는 서비스 - 혹은 데몬 - 에 적용될 가능성은 있다는 생각이 들었어요.

  • 그럭저럭 | 2008/12/16 01:06 | 답글 | 수정

    좋은 정보 감사합니다 :)
    요즘은 그냥 안티 바이러스 하나만 까는게 제일인듯 싶습니다.
    Simple is best -_-)/

답글을 남깁니다.


[요즘에 쓴 글] [예전에 쓴 글]

(C)Milfy / neoocean.net, milfy@neoocean.net