我一直在使用jQuery在所有主流浏览器中遇到一些内存泄漏,我正在寻找一些帮助.我读过很多关于内存泄漏,引用,循环引用,闭包等的文章.我想我做的一切都是正确的.但我仍然看到IE9和FF4中的内存增加以及sIEve中的孤儿对我来说没有意义.
我已经创建了一个测试用例来展示这个问题.测试用例基本上有一个500行的大表,用户可以点击每一行进入内联编辑模式,其中使用jQuery追加元素.当用户退出内联编辑模式时,将删除元素.
测试用例有一个按钮可模拟100行100次点击以快速放大问题.
当我在sIEve中运行它时,内存增加1600KB,使用量增加506,并且有99个孤儿.有趣的是,如果我在第123行注释掉.remove(),内存增加1030KB,使用量增加11,并且有0个孤儿.
当我在IE9中运行它时,内存增加5900KB.刷新再增加1500KB,另一次运行增加1K.继续这种模式继续增加内存使用
当我在FF4中运行它时,如果我使用"100次点击缓慢"和"100次快速点击",我会得到非常不同的行为.模拟慢速点击的峰值增加了8300KB,它需要一分钟才能达到3300KB.模拟快速点击的峰值增加了27,700KB,然后需要一分钟才能达到4700KB.请注意,这与执行的代码完全相同,执行之间的延迟更少.刷新和另一次运行继续以类似的速率增加内存.
示例代码:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Strict//EN">
<html>
<head>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"></script>
<script type="text/javascript">
var clickcounter = 0;
var clickdelay = 0;
var clickstart = 0;
var clicklimit = 0;
$(document).ready(function(){
// Create a table with 500 rows
var tmp = ['<table>'];
for (var i = 0; i < 500; i++) {
tmp.push('<tr id="product_id',i+1,'" class="w editable">');
tmp.push('<td class="bin">',i+1,'</td>');
tmp.push('<td class="productcell" colspan="2">Sample Product Name<div class="desc"></div></td>');
tmp.push('<td class="percentcost">28%</td>');
tmp.push('<td class="cost">22.50</td>');
tmp.push('<td class="quantity">12</td>');
tmp.push('<td class="status">Active</td>');
tmp.push('<td …Run Code Online (Sandbox Code Playgroud) 我试图理解Rserve参数之间的区别--save, - no-save和--vanilla.我没有在文档或任何论坛中看到任何描述这些影响的内容.有谁知道这些是做什么的?
在OSX中,我需要指定其中一个来运行Rserve.
我遇到了让对话框可拖动和调整大小的问题.关于这一切的所有文档和问题都使它听起来很简单,但我无法让它发挥作用.知道我可能做错了吗?
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Strict//EN">
<html>
<head>
<script type="text/javascript" src="js/jquery-1.4.4.min.js"></script>
<SCRIPT TYPE="text/javascript" SRC="js/jquery-ui-1.8.10.custom.min.js"></SCRIPT>
<SCRIPT TYPE="text/javascript">
$(document).ready(function(){
$('#dialog-form').dialog({
// autoOpen: false,
height: 400,
width: 350,
modal: true,
draggable: true,
resizable: true,
buttons: {
Cancel: function() {
$( this ).dialog( "close" );
}
},
close: function() {
alert('here');
}
});
});
</SCRIPT>
<link type="text/css" href="css/smoothness/jquery-ui-1.8.10.custom.css" rel="stylesheet" />
<style>
#dialog-form label {float:left; width:100px;}
</style>
</head>
<body>
<div id="dialog-form" title="Create new product">
<form>
<fieldset>
<label for="pt">Product Type</label>
<input type="text" name="pt" id="pt" …Run Code Online (Sandbox Code Playgroud)