diamon@truediamon.ru:~$

Windows, Linux, КПК и немного ещё.

Firefox и memory allocator из OpenBSD в Linux

Многие жалуются на то, что в Firefox утекает память. На самом деле это не совсем так, она просто фрагментируется. Это особенность реализации malloc - функции выделения памяти в linux-glibc, которая выделяет память одним большим куском.

В OpenBSD используется другой аллокатор, выделяющий память отдельной областью, пропорциональной размеру страницы. Он значительно менее подвержен фрагментации. Его-то я и использую совместно с Firefox и Thunderbird.

Приступим к установке. Качаем исходник тут, компилируем:

diamon@geldern:~$ wget https://truediamon.ru/system/files/OpenBSD_malloc_Linux.c  
diamon@geldern:~$ gcc -shared -fPIC -O2 OpenBSD_malloc_Linux.c -o ~/lib/malloc.so  

Конечно кроме как в ~/lib/ можно положить куда угодно. Лучше наверное в /usr/lib/, поправьте в комментах, как идеологически правильнее.
Запускаем так:

diamon@geldern:~$ LD_PRELOAD=~/lib/malloc.so firefox  

лучше создать в ~/.bashrc алиас:

diamon@geldern:~$ cat .bashrc | grep firefox  
alias firefox="LD_PRELOAD=~/lib/malloc.so firefox"  

В приложении к посту исходник:

OpenBSD_malloc_Linux.c