Почему объем памяти увеличивается с пустой JS requestAnimationFrame ()? - PullRequest
0 голосов
/ 06 января 2020

Я пытаюсь понять значение значения Объем памяти в Chrome (Chrome> Окно> Диспетчер задач). Вот мое окружение:

  • Ма c ОС Каталина (10.15.2)
  • Chrome 79 в безопасном режиме (расширения отключены)

И это мой простой код:

<!DOCTYPE html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <script>
        document.addEventListener('DOMContentLoaded', function(){
          var rAF;
          function loop() {
            rAF = requestAnimationFrame(loop);
          }
          rAF = requestAnimationFrame(loop);
        });
      </script>
    </head>
    <body>
      Memory Leak Test
    </body>
</html>

У меня запущена пустая функция requestAnimationFrame(). Значение JavaScript памяти диспетчера задач начинается примерно с 1 297 КБ, увеличивается примерно до 2 253 К примерно через 30 секунд, а затем, по-видимому, выполняет сборку мусора и повторяет цикл. Эту часть я понимаю.

Что мне непонятно, так это то, что значение занимаемой памяти диспетчера задач со временем продолжает только увеличиваться со скоростью около 1 МБ в минуту. Я обеспокоен тем, что для длительной анимации может быть достигнуто значение sh, если ее не проверять, поскольку занимаемая память занимает слишком много ресурсов.

Для сравнения я также протестировал новое пустое окно браузера и заметил, что значение «Объем памяти» не увеличилось.

Этот пост о переполнении стека связан, но я думаю, это больше связано со значением JavaScript памяти диспетчера задач.

Я надеялся найти более подробную информацию о Memory Footprint на сайте разработчика Google , но он также не дотягивал.

Спасибо за понимание этого вопроса.

Захват экрана с утечкой памяти Анимированный GIF

...