Циркулярные ссылки в IE6, создающие утечки памяти - PullRequest
0 голосов
/ 25 марта 2012

Я обнаружил, что все эти скрипты, хотя и делают одно и то же, создают утечки памяти , вопрос в том, почему?

Казалось бы, это из-за циклических ссылок.

<script>
function runme() {
  var node = document.createElement("div");
  node.onclick = function() {
    node.style.background = "red";
  }
  document.body.appendChild(node);
}
</script>

или

<script>
function runme() {
  var node = document.createElement("div");
  node.onclick = function() {}
  document.body.appendChild(node);
}
</script>

или

<script>
var node = document.createElement("div");
document.body.appendChild(node);
function runme() {
  node.onclick = function() {}
}
</script>

или

<script>
var node = document.createElement("div");
node.onclick = empty;
document.body.appendChild(node);
function empty() {
}
</script>

1 Ответ

0 голосов
/ 25 марта 2012

Я не знаю, как вы обнаруживаете утечки, но для меня только первые 2 примера создают утечку. (Обнаруживается с помощью sIEve )

Причина: inside runme ()вы создаете замыкание для узла .

Когда вы получили утечки во всех 4 примерах, вы должны показать, как вы удаляете узел (это точка, когда происходит утечка)

Однако: решение заключается вудалить события перед удалением элемента: http://www.crockford.com/javascript/memory/leak.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...