I'm working on an embedded product which uses a WebKit-based browser, and I've been tracking down some memory leaks we're seeing. After a long while of digging through the codebase, I've been able to determine that we're occasionally leaking the WebCore::Document object when leaving certain websites. A bit more tracing reveals that the Document object is being retained because an HTMLImageElement holds a DocPtr reference on it, and the element isn't going away when the normal refcount on the Document drops to 0. This pins the Document object in memory. The specific site I've been testing with is www.yahoo.com. Examining the source code to that page reveals the following in the page's beforeUnload event: window.onbeforeunload=function(){ var img=new Image; now=new Date; t6=now.getTime(); img.src=' http://www.yahoo.com/'+(ylp?ylp:'p.gif?t=0')+cc+'&tid='+ver+'&ni='+document.images.length+'&sss='+sss+'&t1='+t1+'&d1='+(t2-t1)+'&d2='+(t3-t1)+'&d3='+(t4-t1)+'&d4='+(t5-t1)+'&d5='+(t6-t1)+'&d6='+(t7-t1)+'&d7='+(t8-t1)+'&d8='+(t9-t1)+'&d9='+(t10-t1)+'&d10='+(t11-t1)+'&d11='+(t12-t1); } It appears that this Image object is never being removed--I can repeatedly navigate to and from this site and watch HTMLImageElements (and their associated Document objects) pile up. I'm still not convinced this is a WebKit problem specifically (there's a fair amount of code surrounding it in our product that could potentially have bugs in it), but to continue tracing the problem, I need to know what the mechanism is that *ought* to be freeing this object. I presume this is something that should be taken care of by the JavaScript garbage collector, however I can see JavaScriptCore::Collector::collect() calls running occasionally after this object is created, and it never goes away. Is there some immediately apparent reason why this wouldn't be happening? I.e., is there something else that would be holding a reference to an object created by this type of script code, or is something other than the GC responsible for freeing it, etc? My apologies if this turns out to be a stupid question--I'm just trying to get some context for where I ought to focus next. Thanks, Matt