잡담

[잡담] 인터넷 익스플로러와 메모리 누수

할랑할랑 2008. 12. 13. 16:46
반응형

[잡담] 인터넷 익스플로러와 메모리 누수

제가 뭐 전문적으로 웹 개발을 하고 있는 사람도 아니고... 메모리 누수 때문에 골머리 앓는 '사용자'의 입장에서 해결할 방법이 없나 찾아보다보니 글을 작성하게 되었는데... 사용자 입장에서 할 수 있는 건 그저 '애드온, 플러그인, BHO(Browser Helper Objects) '등을 제거하고, 정기적으로 보안 업데이트를 꾸준히 하는 정도 밖에는 없는 것 같네요 ㅠㅠ 컴퓨터는 가족이 함께 쓰는 거라, 브라우저를 교체할 수도 없는 노릇이고. 그나마 자료 찾다보니, 글 하단부에, 이런 저런 메모리 누수 관련 자료 링크 모음을 마련하게 되었습니다.

인터넷 익스플로러 6 버전은 비교적 메모리 누수 문제에 대한 보안패치가 꽤나 많이 이뤄져, 문제가 적은 편이라고 생각했습니다.

그런데 지난 10월 쯤 부터, 자주 가는 몇몇 사이트에서 미칠 듯한 메모리 사용률을 보이더군요. 몇 년간 IE6을 고집했지만, 이런 일은 처음입니다.(그간, 빠르다고 소문단 타사 브라우저와 비교해서, IE6 버전은 비교적 괜찮은 성능이었습니다. 파폭은 설치했다가 바로 지웠고... 오페라가 빠르다고 하기에 써봤는데, 페이지 로딩은 얼추 비슷하지만, 페이지의 스크립트나 플래시 플러그인 등에서는 확실히 빠르더군요.)

그런데 원인을 모르겠습니다. 그 기간 동안 제 PC에 있었던 변화를 떠올리며 원인을 예상 해보면...
1. 윈도우 업데이트 IE6 보안패치 중에, 오히려 leak 발생을 키우는 놈이 있을 수 있었다? 스크립트 엔진이 오히려 병신이 되었다?(설마요...)
2. 마침 그런 현상이 나타나기 시작한 게, Java Run Time 6(jre6)를 설치한 후이다. 그 후 jre6을 완전히 제거해도 증상이 없어지지 않는다? jre6이 인터넷익스플로러 스크립트 엔진마저 병신으로 만들었다?(이것도 설마요...)
3. 해당 사이트들의 업데이트 이후, 자바 스크립트 등에 memory leak을 키우는 코드가 많아졌다.(가능성 있음)

대충 이 정도인데... 전부 다 말이 안되는 듯 하죠 사실...

소위 '스크롤 압박'이 있는 과도한 이미지 크기의 페이지를 로딩할 때 메모리 사용량이 400 MB까지 올라가는 일은 있었지만, 일반적인 자바 스크립트 등으로 이뤄진 페이지를 실행할 때 이런 일은 처음 겪거든요.

티스토리 위지윅 에디터에서 좀 긴 글을 작성, 수정을 2, 3회 반복하다보니, 어느새 메모리 사용량이 300 MB까지 치솟더군요.

이런 저런 쇼핑몰을 방문했을때도, 몇 개월전 Internet Explorer 6에서는 오히려, 과도한 플래시(flash)와 스크립트 사용 때문에 속도가 느리긴 했지만, 이런 메모리 사용량 폭증 문제는 겪지 못했었거든요.

비단 IE만의 문제는 아닌 것 같더군요. 메모리 사용량, 메모리 누수 등으로 검색하면, 파이어폭스 관련 들도 꽤나 보이는 것으로 봐서... 최근에는 Ajax로 작성한 웹 프로그램이 많아지면서, 그 정도가 더 심해진 것 같고...(AJAX가 만들어내는 수많은 이벤트 핸들러 등이 문제가 될 수도 있다고 하시네요)

메모리가 1 GB, 2 GB로 많다고 해결될 문제도 아닙니다. 어느 중소 쇼핑몰 사이트를 방문해서 1시간 정도 있어보니, 메모리 사용량이 500 MB, 600 MB까지 치솟았습니다!!! 이 정도라면, 페이지 몇 개 더 띄운다면 1 GB, 2 GB까지도 충분히 급증할 수 있는거죠.

※ 일단 가장 먼저 브라우저 제작사(마이크로소프트/MS)를 탓해야겠지만, 메모리 누수 문제나 저사양에서의 홈페이지 구동 성능에 전혀 관심이 없는, 무관심 웹 개발자들에게도 책임이 없는 것은 아닙니다. 이미 메모리 누수 문제를 해결해보려는 개발자들 사이엔 이런 저런 논의가 많더군요.(완전 해결은 힘들어도, 관심을 지속적으로 가진다면, 어느 정도 완화는 가능하지 않나 싶군요)

※ 그치만 역시나, IE 제작팀이 문제를 좀 해결해주는게 가장 근본적인 해결책이겠죠. 전 세계의 프로그래머들이 "좀 해결해달라"고 끊임없이 피드백을 보내고 있으니, 걔네들도 분명히 잘 알고 있을텐데...


※ 메모리 문제 관련 글들 링크 모음
- 메모리 누수 관련 자바스크립트 팁 Finally로 일부 누수 문제 해결!
[PHPSCHOOL] [정보] [발췌] AJAX - Finally 로 IE6 메모리 누수 해결
[이글루스] 카이님 글
[네이버] sj1g님 글
- [Rhio님] JS App(RIA) 메모리 관리 : 가비지 콜렉션!, 자나깨나 null 처리!
- JScript : 클로져(Closure)와 메모리 누수 문제
Rhio님 글
comefeel.com 글
- 자바 스크립트, 세상에서 가장 오해가 많은 언어(자바의 서브셋이 결코 아니다, Douglas Crockford / skyul님 번역)
- MSDN 기술문서 : "메모리 누수가 일어나는 프로그래밍 패턴"
( 대체 링크 : http://msdn.microsoft.com/en-us/library/bb250448.aspx )
- MSDN 블로거의 "자바 스크립트 메모리 누수 검출 체크 프로그램(베타)"
- '행복한 고니'님 : IE의 Memory Leaks(원문:Douglas Crockford)
- '겐도사마'님 : Java Script의 Garbage Collector 문제
- 네이버 웹2.0 JSF 카페 : 'Ajax와 메모리 누수' (회원가입 필요)
- [ajaxian.com, 2007년] IE의 메모리 누수 해결 뉴스는 과장된 소식이었음

※ MSDN IE 메모리 누수 관련 보안 업데이트 관련글 모음(이렇게보면, MS의 IE팀이 'memory leak' 문제에 지속적으로 관심을 가지고 있긴 합니다만...)
http://support.microsoft.com/kb/309170/ko
http://support.microsoft.com/kb/940072/ko
http://support.microsoft.com/kb/933566/ko
http://support.microsoft.com/kb/867282/ko
http://support.microsoft.com/kb/944533/ko
http://support.microsoft.com/kb/947864/ko

반응형