Side navigation
#4375 closed bug (invalid)
Opened March 18, 2009 03:29PM UTC
Closed October 14, 2009 01:37AM UTC
Last modified January 07, 2010 06:54AM UTC
Memory Leak with plugin and $.data().
Reported by: | jaredjbarnes | Owned by: | |
---|---|---|---|
Priority: | critical | Milestone: | 1.4 |
Component: | unfiled | Version: | 1.3.2 |
Keywords: | Memory Leak, $.data() | Cc: | |
Blocked by: | Blocking: |
Description
<html>
<body>
<div id="test"></div>
<script src="jquery.js"></script>
<script type="text/javascript">
/*Here is the code that causes leaks.
This may be because of the circular reference as described here.
http://www.ibm.com/developerworks/web/library/wa-memleak/
I was under the impression that the data store could have circular refrences, but this may not be the case. I came to the conclusion that this is because the data is stored on the expando object on the node. This would cause the circular reference problem.
*/
(function(){
var Class1 = function(node){this.node = node;};
$.fn.custom = function(){
$.data(this, 'leak', new Class1(this));
};
})();
var count = 0;
var div = $('#test');
var run = function(){
div.append('<span id="'+count+'">'+(count)+'</span>');
$('#'+count).custom();
var spans = $('span');
if (spans.length > 10){
$.removeData(spans[0]);
$(spans[0]).remove();
}
if (count >= 15000){
clearInterval(timer);
}
count++;
};
var start = function(){
count = 0;
timer = setInterval(function(){run();},1);
};
</script>
<button onclick="start();">go</button>
</body>
</html>
Attachments (0)
Change History (3)
Changed March 18, 2009 05:18PM UTC by comment:1
Changed March 18, 2009 06:32PM UTC by comment:2
I have found the the Memory leak stops when using $(node).data() instead of $.data();.
Changed October 14, 2009 01:37AM UTC by comment:3
resolution: | → invalid |
---|---|
status: | new → closed |
It would be best to triage this in the forums and narrow down the cause of the problem.
Using firefox, and found that the data on $.cache is not being removed through $('#nodeId').remove();.
Still can figure out why.