RU AdList JS Fixes

try to take over the world!

< Feedback on RU AdList JS Fixes

Review: OK - script works, but has bugs

Memory Leak

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.

§
Posted: 2018-06-07

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

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

§
Posted: 2018-06-09

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

Lain inVerseAuthor
§
Posted: 2018-06-10
Edited: 2018-06-10

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

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

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

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

Lain inVerseAuthor
§
Posted: 2018-06-13
Edited: 2018-06-13

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

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

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

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

Lain inVerseAuthor
§
Posted: 2018-06-14

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

@"Lain inVerse" said: Написал автору письмо Спасибо!

Lain inVerseAuthor
§
Posted: 2018-06-15

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

Lain inVerseAuthor
§
Posted: 2018-06-23

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

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

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

Post reply

Sign in to post a reply.