Firefox のメモリ管理 jemalloc

Firefox のメモリ管理に jemalloc というものが使われているそうだ。

この jemalloc は、フラグメンテーションを防ぐために 2 のべき乗でメモリを確保する仕組みになっており、

たとえば1,025バイトのアロケーション要求がきた場合、jemallocは2,048バイトを確保する。1,023バイトは利用されない無駄なメモリ領域となる。

http://journal.mycom.co.jp/news/2011/08/09/022/

ということらしい。

確率的にメモリの半分ぐらいが無駄になるんじゃないのか? と思ったら、本当にそのようだ。

上の図の 44% を占める heap-unclassified というのが、使用されない 1023 バイトの積算だ。

上記は 2 日間立ち上げっぱなしで、自分としては普通に使用した状態の使用メモリ。500MB オーバー。開いているタブは 15 個程度。

Firefox がとてもとてもメモリイーターな件 - satosystemsの日記

およそ半分の 250MB は heap-unclassified なのだと考えると納得できる。

それにしても Firefox も(JavaScript エンジンの外で)ガベージコレクションが実装されているというのは、ちょっとした驚きだ。