>Значит, надо пулы использовать, а не оставлять как есть.
Есть там пулы. pr_Zone*alloc(...), см. mozilla/nsprpub/pr/src/malloc/prmem.c
На linux этот кусок кода не используется, используется glibc'ные *alloc, free.
Далее, на OpenBSD 3.* проблемы с памятью у FF нет вообще, взад память возвращается при закрытии страниц, т.к. там *alloc/free не используют sbrk(). Исходный код FF тот же самый везде.
> Только что мешает сделать в FF прослойку между glibc и выделением памяти на уровне языка (суть написать узкозаточенный Memory Manager и перегрузить new) - непонятно, увы :(
Для разных ОС разная прослойка, хлопотно.
Тем более, бОльшая часть пользователей mozilla-* сидит на Windows XP и 2000, в багзилле от них репортов нет о неотдаче памяти ==> разработчики не чешутся.
Ммм... То, что в prmem.c/prmalloc.c -- это не pool, а некий zone-allocator, т.е. как обычный аллокатор, по крайней мере по сравнению с пулами apache разница очевидна.
> в prmem.c/prmalloc.c -- это не pool, а некий zone-allocator, т.е. как обычный аллокатор, по крайней мере по сравнению с пулами apache разница очевидна.
Возможно.
afair, он создает таки несколько арен (zone) вместо 1-2 с glibc.
Поскольку он выделяет их НЕ с помощью mmap, то это вряд ли может нам помочь.
А вот если бы firefox был написан с помощью пулов (как в apache), то это решило бы проблему лучше всяких аллокаторов. Но, увы, жизнь в "режиме если не работает".
Насчет применения сплошь mmap() еще можно поспорить. Отрицательным моментом этого способа выделения памяти является AFAIK необходимость выделения памяти размером со страницу (например, 4K), даже если вам нужен один байт памяти. Однако я видел у кого-то в блоге предложение гибридного способа выделения, но вот где -- не помню.
Сейчас в glibc способ такой. Есть watermark в 128K. Если запрос на выделение памяти идет до этого значения, то используется sbrk(). Если больше, то mmap(). Это так, если еще ничего не поменяли с тех пор.
> Хватить кормить народ недостоверной информацией. Кнопки "Вперед","Назад" грузят все барахло (или проверяют на адекватность, не суть важно) их инета по новой. Мгновенного "назад" как в Опере в ФФ нет. Давайте учитьс я не врать в первую очередь себе. Всегда юзал и юзаю ФФ (из-за пары плагинов, личных предпочтений и нелюбви некоторых сайтов к Опере), но Опера стоит также на компе и сскоростью работы, красотой и просто продуманностью она ОЧЕНЬ радует.
Расширение Fasterfox -- мгновенное перемещение "Вперёд" и "Назад". С этим расширением лиса стала реактивной. -1 довод любителям Оперы. ;)
>> FF - хорош , но постоянные 10-15 секундные "замерзания" всей системы из-за него всеми его наворотами не окупаются.
>Ни хрена себе. Это чем же ты так засрал систему, что у тебя 10..15-секундные паузы? Делись. Ни разу такого не видал.
Видел такую беду в фф в виндовсе. Толи какое-то расширение засрало профиль, толи ещё что-то, х.з., но после одного из апдейтов самого фф стало тормозить зверски при открытии .png картинки занимающей весь экран, плюс при старте закачки фф замерзал секунд на 10-15. Свежая версия фф с кучей плагинов не тормозит нигде и ни на чём.
>Расширение Fasterfox -- мгновенное перемещение "Вперёд" и "Назад". С этим расширением лиса стала реактивной. -1 довод любителям Оперы. ;)
Fasterfox не для этого предназначен. Вы бы поинтересовались сначала принципом работы этого расширения - от него есть польза только только тогда, когда коннект жирный (эдак 10 Mbit/s) позволяет. На низких и средних по скорости коннектах от него вообще толку никакого.
Мгновенное перемещение "Вперёд" и "Назад" в Firefox не имеет никакого отношения к расширениям. Это встроенная фича (с оглядкой на многолетнее присутствие данной функции в Опере), которую приделали в Firefox начиная с версии 1.5. Только реализованная сия фича в Фоксе криво и хромает на обе ноги:
1. Утечки памяти. Память занятая под посещенные страницы (для "мгновенного" к ним возврата) имеет свойство не высвобождаться.
2. "Мгновенный" возврат в Firefox в действительности не мгновенный. Зачастую, при навигации "вперед" и "назад" можно наблюдать задержки, а некоторых случаях и подгрузку элементов "закэшированной" страницы.
В Opera уже не первый год существует истинный "instant back" - без задержек, с моментальной прорисовкой.
>Стоп. FF сознательно не делает free() на выделенную под кэшированные страницы память, если страница выбрасывается из кэша?
Вроде не сознательно. Но проблема есть. Об этом писал один из разработчиков Firefox в своем блоге. Исходя из того поста многие сделали вывод, что утечки памяти в лисе это фича браузере (со слов разработчиков).