0

发布了一个关于如何调试内存泄漏的问题,现在我找到了导致代码中内存泄漏的问题。

this.hover.click(function() {
        hover.click();
    });

    this.click = function(display, section) {
    if(this.expanded() == true) {
        this.collapse();
        DrillDown.remove(true);
        Table.isSortable = true;
        if(Focus.Focus != null)
            {
                Focus.Focus.ClearFocus();
            }
    }
    else {
        this.expand();
        Table.hideRowHovers(this.person);
        DrillDown.display(this.Row.Cell, this.person, display, section);
        Table.isSortable = true
        if(Focus.Focus != null)
        {
            Focus.personFocus.SetFocus(this.person.Id, this.person.Id2, this.person.name);
        }
    }
}

它说 hover.click 在行中持有对 Row 对象的引用

DrillDown.display(this.Row.cell, this.person, display, section);
                  ^^^^^^^^^^^^^  

//This is how I am passing the row object
this.hover = new PersonRowHover(this.person);
this.hover.create(this);
this.hover.html = "";

this.hover.create(this) 指的是我为每个人创建的 PersonRow 对象。我试图将其设置为 null 但它破坏了我的代码。任何有关如何清除此变量的帮助将不胜感激。我正在尝试清除 this.Row 以便 Row 对象被垃圾收集。

谢谢你

4

1 回答 1

0

你可以尝试改变

DrillDown.display(this.Row.cell, this.person, display, section);

var cell = this.Row.cell;
this.Row.cell = null;
DrillDown.display(cell, this.person, display, section);

如果没有this.Row对.cellRow

于 2013-05-24T21:40:43.180 回答