Hendger Wang씨는 최근 IE6의 메모리 문제에 대한 해결책을 찾기 위해 수많은 중국어 블로그를 탐색했습니다. 그의 눈길을 끌었던 것 중 하나는 try ... fianlly를 사용하여 메모리 누수를 멈추기 위해 객체를 null로 바꾼 매우 재치있는 방법이었습니다. 아래가 메모리 누수가 일어나는 코드입니다.
[code:js]
function createButton() {
      var obj = document.createElement("button");
      obj.innerHTML = "click me";
      obj.onclick = function() {
        //handle onclick
      }
      obj.onmouseover = function() {
        //handle onmouseover
      }
      return obj;//return a object which has memory leak problem in IE6
}

var dButton = document.getElementsById("d1").appendChild(createButton());
//skipped....

하지만 다음과 같은 코드를 사용하면 방지할 수 있습니다.
[code:js]
function createButton() {
      var obj = document.createElement("button");
      obj.innerHTML = "click me";
      obj.onclick = function() {
        //handle onclick
      }
      obj.onmouseover = function() {
        //handle onmouseover
      }
      //this helps to fix the memory leak issue
      try {
        return obj;
 
      } finally {
        obj = null;
      }
    }
    var dButton = document.getElementsById("d1").appendChild(createButton());
}

더 많은 데모, 개념을 증명하는 예제와 "finally"에 대한 설명은 Hedger씨의 블로그에 그가 작성한 글에 있습니다.
Finally, the alternative fix for IE6's memory leak is available

from Is "finally" the anwer to all IE6 memory leak issues?
Posted by 행복한고니 트랙백 0 : 댓글 0

티스토리 툴바