Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Memory Leak

About: RU AdList JS Fixes

Latest Chrome (67.0.3396.79), Tampermonkey 4.6.

This script causes memory leak, Chrome's Task Manager shows that the Tampermonkey extension consumes over 100 MB of memory.

Comments

  • На страницах каких ресурсов это происходит? При обычном использовании я наблюдаю чуть больше 50mb.

  • Сложно сказать. Открыт обычно Гугл, ВК, StackOverflow, Яндекс.

  • Попробуйте выявить, на каком сайте можно стабильно воспроизвести проблему.

  • edited June 10 Chrome

    На сколько я знаю мой скрипт, как и множество других, работают в контексте страницы и не должны влиять на объём, занимаемый Tampermonkey. Впрочем, можно попробовать разобраться. Попробуйте на открытых страницах открыть инспетктор страницы Ctrl+Shift+I или F12, перейти на вкладку Memory, нажать там Take Snapshot и Save. Результат в архив и на гугло-диск или яндекс-диск, а ссылку сюда. Я попробую разобраться есть ли там мой косяк. Желательно выключить другие расширения / скрипты и желательно сократить количество анализируемых страниц до минимума.

    Кстати, скорее всего это Яндекс, если это вообще вина скрипта.

  • Добрый день!
    Записал снэпшот, пока на паре страниц - Яндекс и Яндекс.Погода. Отключены все расширения, кроме uBlock Origin и Tampermonkey.

    https://drive.google.com/open?id=1EONTiusVaAUR3HwMU8UVFf-LjW8Y-T1A

  • edited June 13 Chrome

    Не помогло. Впрочем, получилось воспроизвести самому и посмотреть на память самого расширения.

    Если я правильно понимаю, то дело не столько в моём скрипте, сколько в его размере. Tampermonkey не только хранит его в памяти целиком, но ещё и генерирует множество копий, разбитых в блоки по 32Кб. Аналогичное поведение можно заметить установив какой-нибудь другой огромный скрипт вроде этого: https://greasyfork.org/en/scripts/37654-popup-blocker-script
    Попробуйте выключить/удалить мой скрипт и установить указанный выше. Должно даже больше занять. А если оба сразу, то TM легко раздувается до 150 Мб+ при нескольких вкладках Яндекса или нескольких обновлениях страницы подряд.

    Зачем он так делает для меня загадка, но я этим процессом из своего кода управлять никак не могу. Впрочем, это и не утечка памяти так-как если вкладки того же Яндекса закрыть, то со временем ранее занятая этими копиями память в расширении высвобождается так-как ссылок на эти строки больше не остаётся и их удаляет сборщик мусора.

  • Всё понятно, спасибо! Перевключение расширения действительно помогает - память освобождается. Может быть, написать автору TamperMonkey?

  • Написал автору письмо так-как форум на данный момент закрыт. Посмотрим ответит ли.

  • @Lain inVerse said:
    Написал автору письмо

    Спасибо!

  • До сих пор не ответил. Будем дальше посмотреть.

  • Автор ответил, что провёл некоторые оптимизации кода и теперь расширение должно потреблять меньше памяти:

    http://tampermonkey.net/changelog.php?version=4.7.5798&ext=gcal

    Правда почему код оказывается порезан на блоки по 32 Кб он сам пока не в курсе. Похоже это какие-то фокусы самого JS.

Sign In or Register to comment.