<html><head><script language="JScript">function LeakMemory(){// Do it a lot, look at Task Manager for memory responsefor(i = 0; i <5000; i++){
hostElement.text="function foo() { }";
}}</script></head><body><button onclick="LeakMemory()">Memory Leaking Insert</button><script id="hostElement">function foo(){}</script></body></html>
<html><head><script language="JScript">var myGlobalObject;
function SetupLeak(){// First set up the script scope to element reference
myGlobalObject = document.getElementById("LeakedDiv");
// Next set up the element to script scope reference
document.getElementById("LeakedDiv").expandoProperty= myGlobalObject;
}function BreakLeak(){
document.getElementById("LeakedDiv").expandoProperty=null;
}</script></head><body onload="SetupLeak()"onunload="BreakLeak()"><div id="LeakedDiv"></div></body></html>
<html><head><script language="JScript">function AttachEvents(element){// This structure causes element to ref ClickEventHandler
element.attachEvent("onclick", ClickEventHandler);
function ClickEventHandler(){// This closure refs element}}function SetupLeak(){// The leak happens all at once
AttachEvents(document.getElementById("LeakedDiv"));
}function BreakLeak(){}</script></head><body onload="SetupLeak()"onunload="BreakLeak()"><div id="LeakedDiv"></div></body></html>
<html><head><script language="JScript">function AttachEvents(element){// In order to remove this we need to put// it somewhere. Creates another ref
element.expandoClick= ClickEventHandler;
// This structure causes element to ref ClickEventHandler
element.attachEvent("onclick", element.expandoClick);
function ClickEventHandler(){// This closure refs element}}function SetupLeak(){// The leak happens all at once
AttachEvents(document.getElementById("LeakedDiv"));
}function BreakLeak(){
document.getElementById("LeakedDiv").detachEvent("onclick",
document.getElementById("LeakedDiv").expandoClick);
document.getElementById("LeakedDiv").expandoClick=null;
}</script></head><body onload="SetupLeak()"onunload="BreakLeak()"><div id="LeakedDiv"></div></body></html>