Браузеры похожи на людей - они стареют, они раздуваются, и их бросают на более молодых и худых моделях.
Firefox - это не просто браузер, это экосистема.
Хотя я чувствую, что последние версии довольно раздуты, основной продукт в целом стабилен.
Тем не менее, Firefox является экосистемой / платформой для:
1) Плохо написанные плагины
2) Плохо написанный код JavaScript, который выполняется внутри него.
3) Adobe flash в качестве платформы для тяжелого видео и плохо написанных рекламных сценариев, таких как «ударить Усаму бен Ладена уткой, чтобы снизить процентную ставку по закладной и получить бесплатный iPod * (требуется участие).
4) Quicktime и другие медиаплееры.
5) Некоторый встроенный код Java.
В описании утечки памяти предлагается скрипт, запускающий amok, или сторонний инструмент, запрашивающий больше памяти. Если вы когда-либо запускали Flash на Mac, это почти что наряду с 90% загрузкой ЦП.
Целью большинства языков программирования является не спасение вас, а предоставление вам инструментов для спасения себя. Вы можете написать плохой и раздутый код с утечками памяти на любом языке, в том числе с сборкой мусора. Сторонние инструменты обычно не так хорошо протестированы, как сама платформа. Веб-страницы, которые пытаются сделать слишком много, также не редкость.
Если вы хотите провести эксперимент, чтобы продемонстрировать это, приобретите Mac с Firefox и перейдите на хорошо написанный сайт, такой как Stack Overflow, и потратьте час. Ваше использование памяти не должно сильно расти. Затем потратьте 5 минут на просмотр случайных страниц в Myspace.
Теперь позвольте мне ответить на ваши вопросы , основываясь на моих догадках, поскольку я не знаком с исходным кодом
- Когда я закрываю все вкладки, почему
не использует ли память все
вниз?
В то время как каждый экземпляр браузера является независимым процессом с собственной памятью, все вкладки в одном окне находятся в одном процессе. В Firefox использовалось какое-то кэширование в памяти, и простое закрытие вкладки не приводит к немедленной очистке соответствующей информации из кэша в памяти. Если вы снова откроете вкладку на том же сайте, вы можете получить более высокую производительность. Существовал расширенный параметр, позволяющий отключить его, например, browser.cache.memory.enable. Или просто поискать отключение кеша памяти.
* Why is there no limits on extensions/themes/plugins memory usage?
По той же причине, что в Windows или Linux нет процесса проверки приложений, которые вы можете на них запускать. Это открытая среда, и вы принимаете на себя риск. Если вам нужна среда, в которой приложения и расширения «проверяются», Apple может пойти по этому пути:)
* Why does the memory usage increase if it's left open for long periods of time?
Не все вычисления и действия в скрипте имеют визуальные проявления. Сценарий может выполнять некоторые вещи в фоновом режиме (например, запрашивать дополнительные материалы, предварительно извлекать вещи, просто ошибки), даже если вы этого не видите.
* Why are memory leaks so difficult to find and fix?
Речь идет о бухгалтерии. Подумайте о каждом предмете, который вы когда-либо одолжили (даже ручку) или о том, что кто-то одолжил у вас за всю вашу жизнь. Они все учтены? Утечки памяти происходят аналогичным образом (вы заимствуете память у системы), за исключением того, что вы передаете предметы. Затем посмотрите на вещи на вашем столе, вы оставили что-нибудь лежащим, потому что «вам это может понадобиться в ближайшее время», даже если вы, вероятно, не будете? та же история.