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"
В приложении к посту исходник: