Полезная информация

На IRC-канале #mozilla-ru можно получить техническую консультацию онлайн и, конечно же, порцию общения.
  • Форумы
  •  » Firefox
  •  » Как выгружать память сразу по закрытию вкладки?

№127-03-2016 13:44:32

Wave
Участник
 
Группа: Members
Зарегистрирован: 27-09-2007
Сообщений: 440
UA: Firefox 45.0

Как выгружать память сразу по закрытию вкладки?

Не секрет, что [firefox] по закрытию вкладок хранит в памяти их состояние, чтобы можно было мгновенно сделать undo close tab. В частности это означает, что если какая-то вкладка сожрала гигабайт, то при закрытии этой вкладки этот гигабайт так и останется висеть за [firefox].
Так мало того, процессорное время при этом тоже жрётся! Обнаружил такой эффект на примере сайтов, которые посылают уведомления. Закрываю вкладку сайта, а через какое-то время всплывает какое-нибудь очередное уведомление от него.
Иногда, кстати, бывает такое, что закрыл вкладку с играющим видео, а звук этого видео всё ещё идёт. Я, правда, в таком случае прибиваю plugin_container в диспетчере задач.

Как сделать так, чтобы при закрытии вкладки лиса полностью отдавала память и процессор, занятые под эту вкладку? Undo close tab мне приходится делать не каждый день и даже не каждую неделю, а иногда и не каждый месяц. А вот постоянно сожранные под это ресурсы забиваются ежечасно и ежеминутно. Я лучше, если что, заново страницу открою, чем по нескольку раз в день буду перезапускать браузер для профилактики утекающей памяти и прочего.

Что нагуглил:
browser.cache.memory.enable — это оно? Или это не про закрытие, а про открытые вкладки?
config.trim_on_minimize — что-то сильно похоже на тот же профилактический перезапуск.
browser.sessionhistory.max_total_viewer и browser.sessionhistory.max_entries больше похожи на то, сколько шагов вперёд-назад я смогу сделать, если что.

P.s. Особенно хорошо заметно, как возрастает ресурсоёмкость браузера, если сидеть на esr и обновляться раз в год сразу на 7 версий.

Отсутствует

 

№227-03-2016 14:28:28

Stanislav1989
Забанен
 
Группа: Members
Зарегистрирован: 05-05-2014
Сообщений: 210
UA: Firefox 45.0

Re: Как выгружать память сразу по закрытию вкладки?

Wave, browser.sessionstore.max_tabs_undo - именно эта настройка отвечает за мгновенное восстановление недавно закрытых вкладок. По умолчанию значение 10, я себе поставил 3, так как иногда требуется быстренько восстановить вкладку. В вашем случае явно нужно ставить 0 - отключает данную функцию и неплохо экономит оперативку в зависимости от сайтов.

Отсутствует

 

№327-03-2016 14:39:42

Wave
Участник
 
Группа: Members
Зарегистрирован: 27-09-2007
Сообщений: 440
UA: Firefox 45.0

Re: Как выгружать память сразу по закрытию вкладки?

Спасибо.
Попутно изучаю ситуацию, обнаружил, что уведомления от закрытых вкладок — это фича 45-й версии.

Отсутствует

 

№427-03-2016 14:59:09

Stanislav1989
Забанен
 
Группа: Members
Зарегистрирован: 05-05-2014
Сообщений: 210
UA: Firefox 45.0

Re: Как выгружать память сразу по закрытию вкладки?

Да, появился Push API ещё в 44-ой версии. Если не ошибаюсь, вывод уведомлений отключается настройкой dom.serviceWorkers.enabled - нужно поставить false. Но если пользуетесь 45 ESR, то это не должно быть проблемой - для релиза с длительным сроком поддержки dom.serviceWorkers.enabled выключен по умолчанию.

Отсутствует

 

№527-03-2016 16:04:42

Wave
Участник
 
Группа: Members
Зарегистрирован: 27-09-2007
Сообщений: 440
UA: Firefox 45.0

Re: Как выгружать память сразу по закрытию вкладки?

Что-то, откровенно говоря, не вижу особого эффекта от browser.sessionstore.max_tabs_undo = 0. Полазил по сети, закрыл весь десяток вкладок — и смотрю-медитирую, как за пару минут с 585 до 570 мегабайт память процесса firefox.exe опускается. При том, что после старта браузера он весил около четырёхсот.

для релиза с длительным сроком поддержки dom.serviceWorkers.enabled выключен по умолчанию.

Не знаю, не знаю. 45esr — но уведомления при закрытых вкладках стали появляться. До этого была 38esr и на тех же сайтах если вкладку сайта закрыть — уведомления не приходят. Настройка в about:config записана как false.

Отсутствует

 

№627-03-2016 16:18:56

AlAvis
Участник
 
Группа: Members
Зарегистрирован: 16-06-2014
Сообщений: 316
UA: Firefox 45.0

Re: Как выгружать память сразу по закрытию вкладки?

Wave
Описание эффекта от этих настроек - http://sonikelf.ru/optimizuruem-firefox/#more-1633
Есть ещё memory.free_dirty_pages=true , по описанию похоже на требуемое .

Отсутствует

 

№727-03-2016 16:48:42

Wave
Участник
 
Группа: Members
Зарегистрирован: 27-09-2007
Сообщений: 440
UA: Firefox 45.0

Re: Как выгружать память сразу по закрытию вкладки?

Да, с memory.free_dirty_pages=true эффект виден ощутимо лучше, спасибо! Память вычищается практически… Да даже лучше, чем раньше было до старта! Сейчас вот 388 мб занято.
Правда, кажется, больше всплесков с нагрузкой на процессор, но по общему впечатлению каких-то тормозов сверх того, что было, не добавилось. В общем, поработаю так, посмотрю.

Отсутствует

 

№827-03-2016 17:04:30

voqabuhe
Участник
 
Группа: Members
Зарегистрирован: 06-12-2011
Сообщений: 2447
UA: Firefox 48.0

Re: Как выгружать память сразу по закрытию вкладки?

Wave пишет:

Что-то, откровенно говоря, не вижу особого эффекта от browser.sessionstore.max_tabs_undo = 0.

А ты поставь 150-200, а потом сравни с 0. :)
Ещё вот кнопки есть Custom Buttons • View topic - Minimize memory usage

Отсутствует

 

№927-03-2016 17:11:24

Wave
Участник
 
Группа: Members
Зарегистрирован: 27-09-2007
Сообщений: 440
UA: Firefox 45.0

Re: Как выгружать память сразу по закрытию вкладки?

В смысле купи козу — продай козу?
Кнопку гляну, но вообще custom buttons не использую, а memory.free_dirty_pages оказала тот эффект, о котором я спрашивал.

Отсутствует

 

№1027-03-2016 17:22:37

voqabuhe
Участник
 
Группа: Members
Зарегистрирован: 06-12-2011
Сообщений: 2447
UA: Firefox 48.0

Re: Как выгружать память сразу по закрытию вкладки?

Wave пишет:

В смысле купи козу — продай козу?

Ну типа того :)

Добавлено 27-03-2016 17:23:48

Wave пишет:

Кнопку гляну

Там их три.

Отредактировано voqabuhe (27-03-2016 17:23:48)

Отсутствует

 

№1129-03-2016 21:21:55

Stkvsky
Участник
 
Группа: Members
Зарегистрирован: 26-06-2012
Сообщений: 1008
UA: Firefox 38.0

Re: Как выгружать память сразу по закрытию вкладки?

нагуглил еще такое

"about:config

browser.cache.compression_level 0 -> 7
browser.cache.memory.enable true -> false
memory.free_dirty_pages false -> true"

Отредактировано Stakhovsky (13-05-2017 12:03:43)

Отсутствует

 

№1207-04-2016 20:34:54

xrun1
Участник
 
Группа: Members
Зарегистрирован: 12-12-2013
Сообщений: 492
UA: Firefox 45.0

Re: Как выгружать память сразу по закрытию вкладки?

Stakhovsky
browser.cache.compression_level грузит процессор не по детски. Я пробовал 5, ну его на фиг, этот параметр.

Отсутствует

 

№1309-04-2016 17:49:44

age001
Участник
 
Группа: Members
Зарегистрирован: 31-03-2015
Сообщений: 159
UA: Firefox 45.0

Re: Как выгружать память сразу по закрытию вкладки?

Wave

Wave пишет:

Как сделать так, чтобы при закрытии вкладки лиса полностью отдавала память и процессор, занятые под эту вкладку?

А никак, если  только на хромоногую лису не перейдете. :) Там этой болячки не наблюдается. У лисы при закрытии вкладки ее кусочки будут в .ехе оставаться, несмотря на танцы в конфиге. Посерфите часовиков 6-8 на тяжелых сайтах, получите результат. Приходится мириться, мозила знает об этой проблеме, только  решить не может, как и проблемы с многопроцессностью, Servo.

Отсутствует

 

№1421-11-2017 21:36:13

Shpionus
Участник
 
Группа: Members
Зарегистрирован: 27-07-2017
Сообщений: 38
UA: Palemoon 26.0

Re: Как выгружать память сразу по закрытию вкладки?

Аналогичная проблема утечки памяти, по мере открытия\закрытия новых страниц. Сначала замеченная в "Мозиле 28", потом в "Pale Moon 26.5.0", потом и в Мозиле 52. Но то тормоз ещё тот...
memory.free_dirty_pages "true" попробовал, сначала показалось что помогло, но потом начал замечать что всё равно постепенно растёт занимаемая память. При том что вкладки закрываю когда они перестают быть необходимыми. Но реально ощущение что часть от них реально выгружается, а часть остаётся. И не помогает не чистка кеша, не about:memory там три кнопка справа очистки памяти, всё это не то.
Кто-то может что-то ещё посоветовать? У меня сложилось ощущение что проблема не у всех, но вот в чём закономерность? Переход на хромоподобные браузеры, даже не рассматривается. Раньше пользовался Оперой, вплоть до версии 12.17, потом когда многие сайты стали некорректно работать, перешёл на Мозилу. И вот сейчас постоянные переполнения памяти и аварийные завершения после этого, реально достали.

Отсутствует

 

№1504-03-2018 17:47:39

Shpionus
Участник
 
Группа: Members
Зарегистрирован: 27-07-2017
Сообщений: 38
UA: Firefox 30.0

Re: Как выгружать память сразу по закрытию вкладки?

Проблема что не для кого не актуальна? Или всё поголовно сдались и перешли на хромоподобные браузеры? Что скажут пользователи Мозилоподобных? Проблема в 56 версии по прежнему актуальна, она просто меньше заметна если работает многопроцессность, часть данных накапливается в дочерних процессах, и ликвидируется при завершении вкладок породивших эти процессы. Но в родительском процессе, медленно но таки верно продолжается "утечка памяти". Рано или поздно, при активном пользовании Интернетом, поисковики, гугл\яндекс картинки, родительский процесс разрастается до недопустимых размеров. В 32 битных ОС, при достижении родительским процессом 1 гб, весь браузер аварийно завершается. Это Мозилла 56, и Виндовс 7 х86 (32 бита). Как обстоят дела у 58 версии? Или ядро Мозиллы в принципе не может работать без периодического перезапуска? Может кто-то этот вопрос растолковать? Есть какие-то адекватные дельные статьи по этому вопросу?

Отсутствует

 

№1628-01-2019 16:08:46

Shpionus
Участник
 
Группа: Members
Зарегистрирован: 27-07-2017
Сообщений: 38
UA: Firefox 43.0

Re: Как выгружать память сразу по закрытию вкладки?

Говорю сам с собой.
Mozilla 58, проблема всё так-же актуальна.

Отсутствует

 

№1728-01-2019 18:36:48

xrun1
Участник
 
Группа: Members
Зарегистрирован: 12-12-2013
Сообщений: 492
UA: Firefox 64.0

Re: Как выгружать память сразу по закрытию вкладки?

Shpionus
Что-то у Вас не так. У меня в компе 4Гб памяти. Весь кэш браузера пишется не на диск, а держится в памяти. Пофиг, сколько открыто вкладок. Редко, но бывает при активном поиске, что открываю 80 или > 100. Потребление памяти тогда зашкаливает за 1Гб, но вылетов никаких никогда не было. Win10x64, Но думаю, что версия системы и браузера не принципиальны.
Мой user.js https://yadi.sk/d/fYg9Wvxks2WnSg

Отсутствует

 

№1828-01-2019 22:51:26

Coroner
Участник
 
Группа: Members
Зарегистрирован: 29-10-2012
Сообщений: 3390
UA: Firefox 64.0

Re: Как выгружать память сразу по закрытию вкладки?

Shpionus пишет:

Раньше пользовался Оперой, вплоть до версии 12.17, потом когда многие сайты стали некорректно работать, перешёл на Мозилу.

А почему не на 12.18?

У меня ни одна версия не жрала бесконечно и браузер никогда аварийно не падал, за исключением случаев, когда это было вызвано дополнениями, кривыми настройками или темой (была какая-то Black-что-то-там).

Вы написали много, но пробовали ли вы чистый профиль и портативку?

Добавлено 28-01-2019 22:53:01
P.S. Можете попробовать Firemin, он популярен из-за приписывания ему магических свойств «чистить память» и «удалять протечки».

Отредактировано Coroner (28-01-2019 22:53:01)

Отсутствует

 

№1929-01-2019 00:44:04

xrun1
Участник
 
Группа: Members
Зарегистрирован: 12-12-2013
Сообщений: 492
UA: Firefox 64.0

Re: Как выгружать память сразу по закрытию вкладки?

Shpionus
Есть внешняя команда для очистки кэша оперативной памяти. Если пользуетесь Custom Buttons, можете сделать кнопку или просто запускать ручками батник.
для x32
%windir%\system32\rundll32.exe advapi32.dll,ProcessIdleTasks
для x64
%windir%\SysWOW64\rundll32.exe advapi32.dll,ProcessIdleTasks

Отсутствует

 

№2029-01-2019 11:25:33

Shpionus
Участник
 
Группа: Members
Зарегистрирован: 27-07-2017
Сообщений: 38
UA: Firefox 43.0

Re: Как выгружать память сразу по закрытию вкладки?

xrun1 - Возмонжно и что-то не так, но как понять что?
У меня 3 гб памяти. Win7 32.

Проблему я наблюдаю уже много лет, ещё со времён Оперы 12. Тогда она аварийно не завершалась, а просто начинала дико тормозить. При этом соответственно занимая всю имевшуюся на тот момент память 2гб. Потом перешёл на Мозиллу, по причине того что Опера 12хх начала некоторые важные для меня сайты, некорректно обрабатывать. На хромоподобные броузеры, типа новой Оперы, я переходить категорически не хотел.
С Мозилой эта проблема наблюдалась с самого начала, правда аварийные завершения, начиная с какой-то версии, не помню с какой, с 24ой кажется.

Если быть точным, аварийные завершения были как раз после достижения занимаемого места в районе 1 гб. При физической памяти в 2 гб. Однако размер виртуальной памяти этого процесса, доходил как раз до 1,8 гб.
Сейчас стоит Мозилла 58, с её много процессностью, и совсем иным набором дополнений, так как они с тех пор уже сменились много раз. Аварийных завершений работы не наблюдается, зато наблюдается такое же как и было раньше, постепенное разрастание родительского процесса Firefox.exe. Так-же после достижения им размера примерно в 1 гб, и виртуального размера в 1,8 гб, видно что он дальше не может разрастаться, но вместо "вылета", он просто перестаёт подгружать страницы, при их открытии, начинают появляться чёрные неотрисованные области, загрузка страницы прерывается, и при вращении колеса мыши, на экране просто начинает множится то что уже отрисовано. Словом, весь этот бред, указывает на какое-то ограничение размера родительского процесса. Возможно это связано с 32 битностью системы.

Firemin, и похожие на него программы пробовал не раз, они не решают проблемы. Они освобождают какой-то из столбцов памяти процесса, по Process Explorer'у, второй столбец продолжает показывать большое значение, и виртуальный размер тоже не уменьшается. В общем система начинает работать быстрее, физическая память, типа реально освобождается, но самому Firefox'у, на это "плевать", он по прежнему не хочет нормально страницы открывать, при переполненном родительском процессе.

Чистый профиль? Я не раз переустанавливал Мозиллу с нуля, без сохранения профиля (то что нужно сохранял иным путём), работать в чистом профиле без дополнений, и настроек, нереально. А проблема проявляется далеко не сразу.
Про портативки, первый раз слышу. Там небось сборки, с перекуроченными настройками. Не люблю такого. Да и не верю что оно решит проблему.

Комманды очистки кеша, позже попробую.

Отсутствует

 

№2129-01-2019 11:43:20

Coroner
Участник
 
Группа: Members
Зарегистрирован: 29-10-2012
Сообщений: 3390
UA: Firefox 64.0

Re: Как выгружать память сразу по закрытию вкладки?

Shpionus пишет:

Про портативки, первый раз слышу. Там небось сборки, с перекуроченными настройками. Не люблю такого.

Да кому надо их курочить то?
Вся фишка как раз и заключается в том чтобы опробовать «новый, с нуля» Firefox в изолированной среде, иначе говоря as is, как он поставляется производителем.
Бывает ведь и какая-то дрянь в реестре записана с видеодровами связанная, оставшаяся ещё от 11 версии, бывает что установленное ранее дополнение (и снесённое потом) перекручивает настройки и после удаления их не восстанавливает.

Польза есть. Ставим портативку и смотрим как работает пару часов. Нормалёк? ОК, свой любимый профиль пихаем в портативку и смотрим что будет.
Течёт — лечим методом отключения дополнений / возвратом настроек в дефолтное состояние с последующим включением аддонов по одному и постепенным же изменением нужных настроек. Точно так же как и с чистым профилем, разве начинаем действительно с «установленного с нуля» Firefox.

Shpionus пишет:

А проблема проявляется далеко не сразу.

Стоит обратить внимания на файлы в профиле — например у некоторых пользователей имелся разросшийся до невероятности webappsstore.sqlite (десятки мегабайт), после удаления которого всё приходило в норму. Да и все *.sqlite обслужить бы вручную не помешает — SpeedyFox или sqlite3.exe + батник типа

Выделить код

Код:

for %%i in (storage\permanent\moz-extension+++ляляля\idb\*.sqlite OfflineCache\*.sqlite extension-data\*.sqlite *.sqlite) do @echo VACUUM; | sqlite3 %%i

Отредактировано Coroner (29-01-2019 11:43:46)

Отсутствует

 

№2229-01-2019 12:59:06

Shpionus
Участник
 
Группа: Members
Зарегистрирован: 27-07-2017
Сообщений: 38
UA: Firefox 43.0

Re: Как выгружать память сразу по закрытию вкладки?

%windir%\system32\rundll32.exe advapi32.dll,ProcessIdleTasks - попробовал, поработало пару секунд, и завершилось. С памятью абсолютно нечего не поменялось.
webappsstore.sqlite на данный момент у меня 8 мб. А что это за файл? Что в нём?
Что значит обслужить вручную все *.sqlite? Что с ними надо делать?
Аа понял, дефрагментировать.
Загрузил "SpeedyFox" (Мне почему-то кажется что я её когда-то уже использовал, и она не чем не запомнилась, но у себя в компьютере, я её не нашёл). Запустил, она что-то там поделала, правда попросила закрыть Мозилу, на что я нажал игнорировать :) Я читал тут кое что. Она отработала, написала комплит. Я её закрыл. С памятью ожидаемо нечего не изменилось. Предполагаю что надо было закрыть Мозиллу? Ну в следующий раз запущу SpeedyFox, когда буду браузер перезапускать.

Отредактировано Shpionus (29-01-2019 13:00:41)

Отсутствует

 

№2329-01-2019 13:34:20

xrun1
Участник
 
Группа: Members
Зарегистрирован: 12-12-2013
Сообщений: 492
UA: Firefox 64.0

Re: Как выгружать память сразу по закрытию вкладки?

Shpionus
SpeedyFox с памятью ничего не делает. Программа сжимает .sqlite-файлы.

Отсутствует

 

№2429-01-2019 17:04:03

Stkvsky
Участник
 
Группа: Members
Зарегистрирован: 26-06-2012
Сообщений: 1008
UA: Firefox 56.0

Re: Как выгружать память сразу по закрытию вкладки?

Shpionus
А какие характерискики компьютера и после скольки часов серфинга и количества открытых вкладок падает браузер?

Отсутствует

 

№2517-03-2019 04:13:56

Shpionus
Участник
 
Группа: Members
Зарегистрирован: 27-07-2017
Сообщений: 38
UA: Firefox 43.0

Re: Как выгружать память сразу по закрытию вкладки?

Компьютер с 3я гб ОЗУ, и Windows 7 32 бит.

В общем загрузил портабл версию. Запустил. поработал пару часов, всё вроде нормально. Установил дополнения которыми пользуюсь. Импортировал закладки.
Прошло вот уже почти два месяца. Работало как-то как будто по другому, будто бы реально освобождало память после закрытия вкладок. Но не до конца. При выполнении about:memory - Minimize memory usage занимаемая память освобождалась уже почти полностью.
Несколько раз, после нескольких суток работы (Windows 7 я привык не выключать виндовс, а в гибернацию всегда отправлять), наблюдалось повышенное потребление памяти. Но закрытие всех вкладок, и выполнение about:memory - Minimize memory usage, решало вопрос. Я даже думал что эта портабл версия таки как-то подкручена. Галочки в настройках там далеко не "дефолтные" были. В частности была галочка "Отключить автоматическое управление кэшем", и "Использовать под кэш не более" было 0. Я так и оставил.
Но вот сегодня работал себе работал, и очередной раз открыл Яндекс картинки. (На них кстати очень часто проявлялась эта утечка. Хотя не только на них, бывало и на совсем других сайтах не связанных с Яндексом.) И опять началось...
По "Sysinternals Process Explorer'у" столбцы родительского процесса firefox.exe "Не разделяемых байт" и "Рабочий набор" были около гигабайта, а столбец "Виртуальный размер" который обычно всегда раза в два, три больше чем те два предыдущих, занял свои любимые 1,8 гб, выше не бывает. В таком состоянии память больше не когда не растёт, типа не куда. При том что ОЗУ ещё есть. Больше ресурсоёмких программ в системе не запущено.
И видно что браузеру реально не куда подгружать данные, окна перестают работать, элементы заменяются чёрным фоном, который может исчезать если вкладки попереключать, начинает множится чисто видимая часть страниц, если прокрутить вниз. Собственно это всё если человек сам не наблюдал, то понять о чём речь, вряд-ли сможет.
Грешить на дополнения нет смысла так как:
Эта, и именно эта проблема, наблюдаемая мной уже не первый год, и проявляющаяся абсолютно одинакового, кочует от версии браузера к версии, начиная с версии 24. Когда все дополнения были совсем другими. Сейчас вообще они на Мозилу квантум, все уже переписаны давно.
К сожалению забыл очередной раз, записать видео как всё это выглядит. Постараюсь в следующий раз так и сделать.

Отсутствует

 
  • Форумы
  •  » Firefox
  •  » Как выгружать память сразу по закрытию вкладки?

Board footer

Powered by PunBB
Modified by Mozilla Russia
Copyright © 2004–2011 Mozilla Russia
Язык отображения форума: [Русский] [English]