RESOLVED FIXED 12659
JS objects not collected after closing window @ ebay.com/maps.google.com
https://bugs.webkit.org/show_bug.cgi?id=12659
Summary JS objects not collected after closing window @ ebay.com/maps.google.com
Maciej Stachowiak
Reported 2007-02-06 23:31:33 PST
2007-01-25 10:38:22 Chris Petersen: * SUMMARY As part of my ongoing performance testing for Leopard, I have been asked to measure for memory leaks on sites that use heavy Javascript. I chose two specific test site: www.ebay.com and maps.google.com . My testing was done with Private browsing turned on and " Disable WebCore Caches " checked on (in the Debug caches window) From my testing , I was seeing remaining referenced javascript objects (in the caches window) after I closed the window that contained these specific sites. After closing the window that contained www.ebay.com, the caches window was showing total of 5808 (JS objects) that was referenced. After closing the window that contained www.maps.google.com, the caches window was showing total of 9823 (JS objects) that was referenced. Note: BEFORE I started the steps below, I completed the following. Clear cache and set a empty page as the default in Safari. Enable Private browsing and turn on "Disable Webcore Caches" * STEPS TO REPRODUCE 1. On stock 9A348, go to http://maps.google.com or http://www.ebay.com 2. After each site loads, complete a address search at http://maps.google.com or a item search at http://www.ebay.com 3. Note the amount of JS object are listed in the Caches window when search is completed. 4. Now, close this window and click the "Refresh" button 5. Notice the number of JS objects are reduced but some remain In my case, I was seeing the following after closing the window: After closing http://maps.google.com , the JS objects remained at Reference 1 - Total: 9823 (STRING) After closing http://www.ebay.com , the JS objects remained at Reference 1 - Total: 5808 (STRING) 2007-01-25 13:19:40 Geoff Garen: Big memory leak => blocker. 2007-01-29 16:21:18 Lee Bernhard: Perf BRB: Adding OSX-Perf Leopard Critical and OSX-Perf Memory. Recommend P1 for Leopard. 2007-01-29 18:08:30 Geoff Garen: I guess " blocker" means P1, anyway. 2007-02-05 13:15:58 Stephanie Lewis: By virtue of being Safari Blocker Reviewed, these have been Safari BRB Reviewed <rdar://problem/4954306>
Attachments
patch (8.95 KB, patch)
2007-02-27 12:26 PST, Geoffrey Garen
mjs: review+
Feng Qian
Comment 1 2007-02-22 13:57:04 PST
It is probably because properties were not cleared properly when closing the window. In the same window you visited ebay or maps.google, open 'about:blank', and exit, no leaks happen. (In reply to comment #0) > 2007-01-25 10:38:22 Chris Petersen: > * SUMMARY > As part of my ongoing performance testing for Leopard, I have been asked to > measure for memory leaks on sites that use heavy Javascript. I chose two > specific test site: www.ebay.com and maps.google.com . My testing was done with > Private browsing turned on and " Disable WebCore Caches " checked on (in the > Debug caches window) > > From my testing , I was seeing remaining referenced javascript objects (in the > caches window) after I closed the window that contained these specific sites. > > After closing the window that contained www.ebay.com, the caches window was > showing total of 5808 (JS objects) that was referenced. > > After closing the window that contained www.maps.google.com, the caches window > was showing total of 9823 (JS objects) that was referenced. > > > Note: BEFORE I started the steps below, I completed the following. Clear cache > and set a empty page as the default in Safari. Enable Private browsing and > turn on "Disable Webcore Caches" > > > * STEPS TO REPRODUCE > 1. On stock 9A348, go to http://maps.google.com or http://www.ebay.com > 2. After each site loads, complete a address search at http://maps.google.com > or a item search at http://www.ebay.com > 3. Note the amount of JS object are listed in the Caches window when search is > completed. > 4. Now, close this window and click the "Refresh" button > 5. Notice the number of JS objects are reduced but some remain > > In my case, I was seeing the following after closing the window: > > After closing http://maps.google.com , the JS objects remained at Reference 1 - > Total: 9823 (STRING) > After closing http://www.ebay.com , the JS objects remained at Reference 1 - > Total: 5808 (STRING) > > 2007-01-25 13:19:40 Geoff Garen: > Big memory leak => blocker. > > 2007-01-29 16:21:18 Lee Bernhard: > Perf BRB: Adding OSX-Perf Leopard Critical and OSX-Perf Memory. Recommend P1 > for Leopard. > > 2007-01-29 18:08:30 Geoff Garen: > I guess " blocker" means P1, anyway. > > 2007-02-05 13:15:58 Stephanie Lewis: > By virtue of being Safari Blocker Reviewed, these have been Safari BRB Reviewed > > <rdar://problem/4954306> >
Maciej Stachowiak
Comment 2 2007-02-22 19:10:19 PST
Might be fixed already, or if not, may be fixed by http://bugs.webkit.org/show_bug.cgi?id=12850
Geoffrey Garen
Comment 3 2007-02-26 07:06:29 PST
Along the lines of what Ian said, if you do a manual GC after closing the window, all the objects get reclaimed. So I think there's something wrong with our "GC when closing the WebView" logic, where we GC just a little bit early, before some significant reference has been cleared.
Geoffrey Garen
Comment 4 2007-02-26 07:20:34 PST
I see a far less significant number of live objects @ maps.google.com, so this may have been partially fixed by bug 12850. Still, I see a large number of live objects @ ebay.com.
Feng Qian
Comment 5 2007-02-26 11:20:07 PST
I doubt this leak has anything to do with bug 12850 which would not release retained objects by going to "about:blank" page. Like Geoffrey said, it has something to do with not calling GC when closing a window. BTW, I also saw that a web page having several Frames triggers GC multiple times when leaving the page, each Frame destructor triggers a GC, which is very unnecessary IMH. (In reply to comment #4) > I see a far less significant number of live objects @ maps.google.com, so this > may have been partially fixed by bug 12850. Still, I see a large number of live > objects @ ebay.com. >
Geoffrey Garen
Comment 6 2007-02-26 12:35:31 PST
I have a partial fix for this in my tree. Assigning bug to me.
Geoffrey Garen
Comment 7 2007-02-26 13:16:13 PST
> BTW, I also saw that a web page having several Frames triggers GC multiple > times when leaving the page, each Frame destructor triggers a GC, which is very > unnecessary IMH. Cool. I've filed bug 12900 on that.
Geoffrey Garen
Comment 8 2007-02-27 12:26:55 PST
Maciej Stachowiak
Comment 9 2007-02-27 12:40:06 PST
Comment on attachment 13408 [details] patch r=me Is there any way to make a test case for this?
Geoffrey Garen
Comment 10 2007-02-27 14:41:00 PST
Committed revision 19894 (with test).
Note You need to log in before you can comment on or make changes to this bug.