Изменение местоположения хэша, onhashchange и утечки памяти - PullRequest
2 голосов
/ 17 августа 2011

При запуске следующего скрипта в Safari и Firefox 5 (другие браузеры не тестировались) использование памяти обоими браузерами резко возрастает. Но после завершения функции использование памяти все еще остается очень высоким. Использование памяти Safaris увеличивается на ~ 80 МБ, FF до 200 МБ.

Есть мысли, почему даже через несколько минут использование памяти не уменьшается?

<!DOCTYPE html>
<html>
  <head>
    <title></title>
    <script type="text/javascript">
      window.onhashchange = function() {
        var i = 1; // do something
      };

      function leakIt() {
        for(var i = 0; i < 10000; i++) {
          window.location.hash = i%4; // Trigger onhashchange
        }
      };

      window.onload = function() {
        document.getElementById('leak').addEventListener('click', leakIt,false);
      };
    </script>
  </head>
  <body>
    <button id="leak">Leak it!</button>
  </body>
</html>

Дополнительная информация

Если я перезагружаю страницу в Safari и снова вызываю функцию leakIt, объем памяти увеличивается примерно на 20 МБ, а после завершения leakIt использование памяти возвращается к объему после первого вызова leakIt.

1 Ответ

1 голос
/ 17 августа 2011

Что произошло, когда вы обновили страницу? Пока вы обновляете страницу и память продолжает увеличиваться, это утечка памяти. Вы можете использовать Сито , чтобы обнаружить это.

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