Когда профилирование Javascript в Chrome, как я знаю, я справился с утечками памяти?
Я работаю над игрой для HTML 5, используя тег canvas, и я создал довольно базу кода, чтобы покрыть мои требования. Я также хочу убедиться, что я скрываю все утечки памяти.
У меня есть сомнения, что я делаю это правильно, потому что обратная связь, которую я получаю от диспетчера задач Chrome и инструментов профилирования, кажется, говорит о том, что моя очистка не оказывает никакого эффекта в конце.
Вот изображение, чтобы вы могли видеть, что я имею в виду:
![enter image description here]()
Итак, как вы можете видеть, как только я использую использование памяти очистки, просто зависает и не падает. Это утечка памяти?
Когда я запускал свою веб-страницу в Profiler и проверял кучу до и после очистки, она, похоже, удаляет все ссылки на мои объекты (и они исчезают), но мое использование уменьшается всего на несколько килобайт, оставляя около 1,3 МБ массивов, строк и других объектов. Разве невозможно поймать все это или есть что-то серьезное?
Спасибо.
Ответы
Ответ 1
В нижней части окна профилировщика есть значок, похожий на мусорный контейнер, он будет принудительно пропускать GC.
Убейте его и посмотрите, очищает ли он оставшуюся память.
Возможно, Chrome/V8 просто не думает, что ситуация с памятью достаточно плоха, чтобы требовать запуска сборка мусора.
Ответ 2
Попробуйте chrome://memory-redirect/
(или about:memory
, оба идут в одно и то же место). Он покажет вам точный объем памяти, который будет использоваться каждой вкладкой /etc, плюс память, используемая тегами /etc в IE, Opera, Firefox и т.д., Если у вас есть открытые одновременно. Необработанные числа должны быть немного полезнее, чем просто график профилирования использования вашей памяти для возможных утечек.
Ответ 3
Вы можете сравнить два снимка кучи и увидеть дельту. Вы также можете посмотреть мгновенный снимок памяти: https://developers.google.com/chrome-developer-tools/docs/heap-profiling-comparison?hl=pt-PT