jemalloc
jemalloc is a general-purpose scalable concurrent malloc(3) implementation. There are several divergent versions of jemalloc in active use, including:
The canonical jemalloc distribution available via this website, which currently targets Linux, FreeBSD, Mac OS X, and Microsoft Windows.
FreeBSD's default system allocator. This was the first public use of jemalloc, and it is still author-maintained.
NetBSD's default system allocator (jemalloc.c).
Mozilla Firefox's allocator (source code), specifically for Microsoft Windows-related platforms, Solaris, and Linux. There is Apple Mac OS X support code as well, but it has yet to be used in a release.
Documentation
jemalloc was originally described in a paper I presented at the BSDcan conference in 2006. More recently I wrote a Facebook Engineering Blog Post which corresponds to jemalloc 2.1.0. The jemalloc(3) manual page completely documents the API, as well as run-time configuration.
Mailing lists
There are two mailing lists devoted to jemalloc:
jemalloc-announce: Low volume, used primarily for release announcements.
jemalloc-discuss: General jemalloc discussion (technical, questions, bug reports, etc.).
History
jemalloc started out as the memory allocator for a programming language runtime in 2005, but language design changes made the allocator superfluous. At the time, FreeBSD was in need of an SMP-scalable allocator, so I integrated jemalloc into FreeBSD's libc, and then made a long series of improvements to scalability and fragmentation behavior.
In late 2007, the Mozilla Project was hard at work improving Firefox's memory usage for the 3.0 release, and jemalloc was used to solve fragmentation problems for Firefox on Microsoft Windows platforms. You can read here about the fruits of that labor. I made many enhancements to jemalloc while developing for Mozilla, and all of the generic algorithmic improvements were incorporated into FreeBSD's jemalloc. More recently, Mozilla sponsored integration of Apple Mac OS X support into the stand-alone jemalloc.
Since 2009 I have adapted jemalloc to handle the extreme loads Facebook servers commonly operate under. Facebook uses jemalloc in many components that are integral to serving its website. Facebook supports numerous open source projects, and is to thank for sponsoring many of the features that first appeared in the stand-alone jemalloc.
Copyright © 2012 Jason Evans <jasone@canonware.com>.