Side navigation
#3299 closed bug (invalid)
Opened August 29, 2008 11:00AM UTC
Closed November 08, 2010 04:33PM UTC
Last modified March 14, 2012 06:55PM UTC
Memory leaks when using opacity on overlay for a dialog
Reported by: | dbegent | Owned by: | |
---|---|---|---|
Priority: | major | Milestone: | 1.3 |
Component: | core | Version: | 1.2.6 |
Keywords: | memory leak dialog overlay opacity | Cc: | dbegent@yahoo.com |
Blocked by: | Blocking: |
Description
I am currently experiencing a rise in 9+Mb in memory usage when I have an opacity setting set on a dialog I'm using. Without the opacity setting the leak doesn't happen.
I've included some test code below (and attached) including descriptive text as to where the bug happens.
Initially the issue occurs here:
document.documentElement[ method ] // method = "scrollTop"
on line 3522 of jquery-1.2.6.js
However, if I comment out this line I then get the same problem here:
pLeft += (wnd.width() - this.uiDialog.width()) / 2;
on line 7812 of jquery.ui.all.js
For this last line, the leak happens when you call either the wnd.width() or the this.uiDialog.width() functions. I have been using this within Visual Studio and can cause the memory leak just by putting the wnd.width() into the Watch window.
This does not happen in Firefox, just (from what I've tested so far) in IE 6 and 7
Any ideas why this is happening or how to prevent it?
<!-- Test code... -->
<html>
<head>
<!-- JQuery -->
<script type="text/javascript" src='./JavaScripts/jquery-1.2.6.js' ></script>
<script type="text/javascript" src='./JavaScripts/jquery.form.js' ></script>
<script type="text/javascript" src='./JavaScripts/jquery.ui.all.js' ></script>
<script>
var test = new Test();
$(document).ready(function() {
test.hookupLinks();
});
delete test;
function Test() {
this.hookupLinks = function() {
// Set up the dialog popup from the link
$('.test').click(runTest);
}
function runTest() {
var dialogContainerName = "#dialogContainer";
$(dialogContainerName).text("Now check if the memory allocated to this window has gone up...");
$(dialogContainerName).show();
$(dialogContainerName).dialog({
title: "Testing memory leak",
modal: true,
overlay : {opacity: 0.5, "background-color" : "#808080" },
height : 120,
width : 250,
resizable: false,
position: "center",
buttons: {
'Yes': function() {
$(this).dialog('destroy');
return true;
},
'No': function() {
$(this).dialog('destroy');
return true;
}
}
});
}
}
</script>
</head>
<body>
<form>
<a class="test" href="javascript:void(0)" title="Testing the memory leak when dialog opens">Click here to open dialog</a><br />
Removing the opacity from the overlay stops the memory leak. Keeping this in causes the memory leak at these points:
<ul>
<li>
document.documentElement[ method ] // method = "scrollTop" <br />
in jquery-1.2.6.js on line 3522
</li>
<br /><br />Removing this line causes the leak to happen at this point<br /><br />
<li>
pLeft += (wnd.width() - this.uiDialog.width()) / 2;<br />
on line 7812 of jquery.ui.all.js
</li>
<br /><br />This leak happens when either the wnd.width() or the this.uiDialog.width() is called. I can step into this and cause the memory leak whilst in debug just by putting a watch on either of these 2 calls
<div id="dialogContainer" title="Confirm Delete" style="display:none;"></div>
</form>
</body>
</html>
<!-- // End Test code... -->
Attachments (1)
Change History (1)
Changed November 08, 2010 04:33PM UTC by comment:1
resolution: | → invalid |
---|---|
status: | new → closed |
Closing as invalid. This is the bug tracker for jQuery bugs only, not jQuery UI. Additionally, this bug is resolved in recent releases of jQuery UI