Как избавиться от элементов DOM в JavaScript для предотвращения утечек памяти

Похоже, вы хотите указать во время выполнения, какое поведение использовать, включив фактический тип, что и является полиморфизмом.

Вам не понадобится интерфейс, поскольку у вас уже есть общий базовый класс. Так что просто измените private IBaseClass _child = GetChildClass() на private BaseClass _child = GetChildClass():

public class Program
{
    private BaseClass _child = GetChildClass();

    public void MethodOne()
    {
        DoSomething(_child);
    }

    public void MethodTwo()
    {
        DoSomething(_child);
    }
}

Это предполагает, что DoSomething просто ожидает BaseClass в качестве параметра.

28
задан Toran Billups 20 June 2015 в 13:22
поделиться

2 ответа

Сложная задача - выяснить, где еще существует ссылка на нарушающие узлы.

Вы делаете это трудным путем - вы добавляете всю разметку на страницу, а затем удаляете ненужные элементы. Вместо этого я бы сделал это следующим образом:

var div = document.createElement('div');
// (Don't append it to the document.)

$(div).html(xhtml);

var stuffToKeep = $(div).find("form:eq(1)> *").filter(
  function() {
    return $(this).attr('id') !== '';
  }
);

parentObj.append(stuffToKeep);

// Then null out the original reference to the DIV to be safe.
div = null;

Это не гарантирует остановку утечки, но это хорошее начало.

12
ответ дан 28 November 2019 в 03:52
поделиться

remove () и ему подобные удаляют только элементы из DOM. Они все еще где-то существуют в памяти.

Это известная проблема с AJAX и Web 2.0. Вы мало что можете сделать, кроме разработки своего сайта и обеспечения того, чтобы время от времени обновлялась страница, чтобы все стереть.

2
ответ дан 28 November 2019 в 03:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: