Author |
Message |
chrisco
Joined: Thu Jan 13, 2011 3:06 pm Posts: 10
|
 CSS3 Pie Memory Leak
Hi,
I've recently started using CSS3 pie and it is fantastic. One thing I have noticed is that when in use, IE starts leaking memory. I notice the memory increases each time the css3 style changes on an element with css3pie in use.
Anybody else notice this? This will be an issue because I am developing a site using a lot of dynamic content and very few page refreshes.
thanks
|
Thu Jan 13, 2011 3:09 pm |
|
 |
jason
Joined: Wed Jul 14, 2010 11:46 am Posts: 1452
|
 Re: CSS3 Pie Memory Leak
Can you provide more information on this?
Does the memory increase persist from page to page, or is it only within a single page? You say the memory goes up when a style changes. Does this happen for any style change or only certain styles? Does it happen if the style changes to something that has been rendered before (e.g. toggling back and forth between 2 styles), or only for new styles that haven't been used? (PIE keeps an internal cache of parsed styles for performance, this cache would obviously grow as new styles are applied.)
|
Wed Jan 19, 2011 10:41 pm |
|
 |
chrisco
Joined: Thu Jan 13, 2011 3:06 pm Posts: 10
|
 Re: CSS3 Pie Memory Leak
The example I have is an <a> element where I have css3pie applied for rounded corners and gradient, and then change css3pie styles on hover. When I mouseover and out over and over again I notice the memory usage go up each time, and never come back down. If i try the same thing but without using css3pie the memory usage stays level.
The specific browser I am seeing this in is IE8 running in IE7 mode
*Corrections:* I notice the memory issue in IE8 standards mode as well. When I run IE8 it launches two iexplore.exe processes. One will continue to eat memory as long as I keep switching styles with css3pie. and will not release it even if I reload the page.
Thanks
|
Mon Jan 24, 2011 12:30 pm |
|
 |
chrisco
Joined: Thu Jan 13, 2011 3:06 pm Posts: 10
|
 Re: CSS3 Pie Memory Leak
I have attached a sample page where you can see what I'm doing. http://dl.dropbox.com/u/4257568/PIE%20Bug/Template.htmlAlso there is another bug there when using javascript:void(0); in an href property. I filed a for this one in GitHUB. To see where the leak is coming from, you can use an old but nifty tool called Drip http://www.outofhanwell.com/ieleak/inde ... =Main_PageIt points us always to VML nodes being references being made so that they cannot be removed from memory.
|
Tue Jan 25, 2011 1:52 pm |
|
 |
jason
Joined: Wed Jul 14, 2010 11:46 am Posts: 1452
|
 Re: CSS3 Pie Memory Leak
Thanks for the info Chris, I'll look into it.
|
Tue Jan 25, 2011 2:49 pm |
|
 |
chrisco
Joined: Thu Jan 13, 2011 3:06 pm Posts: 10
|
 Re: CSS3 Pie Memory Leak
I was looking at this some more, and it seems as though your code is maintaining some references to some <VML> elements (shape, fill, border, background) even after they have been removed from the page. This could be happening through a closure with a callback reference in it when you create the elements. Every time the HTC changes styles, this would create new elements and new back-references, and thus the memory usage increases.
I haven't looked at the uncompressed HTC code, but that would be my guess. I am not quite sure how HTC files are applied to the page, so this is only a guess.
|
Tue Jan 25, 2011 6:01 pm |
|
 |
chrisco
Joined: Thu Jan 13, 2011 3:06 pm Posts: 10
|
 Re: CSS3 Pie Memory Leak
Could someone with IE6 or IE7 available try my sample page and see if they exhibit the same behavior I describe? I found the problem occurs with IE9 beta (running in IE8 mode) as well as IE8. If IE6 and IE7 don't exhibit the same behavior it might be related to this issue here: http://com.hemiola.com/?p=5If this is the case, then there is no real fix to be done, but apparently memory leakage can be reduced by using clearAttributes() before removing the element from the DOM. Update: Well I tested IE 6 and 7 myself and found that they eat up memory as well, but as opposed to IE8 and 9, they release it on page refresh. Leaves me wondering again.
|
Thu Jan 27, 2011 7:40 am |
|
 |
jason
Joined: Wed Jul 14, 2010 11:46 am Posts: 1452
|
 Re: CSS3 Pie Memory Leak
That's a very interesting leak. Would you perhaps be able to try adding the clearAttributes calls to the PIE code and see if it helps?
|
Thu Jan 27, 2011 10:45 am |
|
 |
chrisco
Joined: Thu Jan 13, 2011 3:06 pm Posts: 10
|
 Re: CSS3 Pie Memory Leak
|
Thu Jan 27, 2011 12:52 pm |
|
 |
jason
Joined: Wed Jul 14, 2010 11:46 am Posts: 1452
|
 Re: CSS3 Pie Memory Leak
|
Thu Jan 27, 2011 3:15 pm |
|
|