小编lsc*_*lt2的帖子

IE 7/8/9和FF 4中的jQuery内存泄漏

我一直在使用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)

jquery memory-leaks internet-explorer-9 firefox4

6
推荐指数
1
解决办法
1236
查看次数

Rserve参数: - save vs --no-save vs --vanilla

我试图理解Rserve参数之间的区别--save, - no-save和--vanilla.我没有在文档或任何论坛中看到任何描述这些影响的内容.有谁知道这些是做什么的?

在OSX中,我需要指定其中一个来运行Rserve.

rserve

6
推荐指数
1
解决办法
5576
查看次数

jQuery UI对话框不可拖动或可调整大小

我遇到了让对话框可拖动和调整大小的问题.关于这一切的所有文档和问题都使它听起来很简单,但我无法让它发挥作用.知道我可能做错了吗?

<!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)

jquery-ui

3
推荐指数
1
解决办法
1万
查看次数