No description
Find a file
Slobodan Predolac a54018337c Consolidate arena_* header split into arena.h
arena_types.h + arena_structs.h + arena_externs.h merged into arena.h,
keeping the three logical sections (TYPES / STRUCTS / EXTERNS) with
explicit dividers.  arena_inlines_a.h and arena_inlines_b.h stay
separate; arena_inlines_b.h now carries a comment explaining why
merging the two would reintroduce a real #include cycle through
tcache_inlines.h -> arena_choose (the asymmetric cycle-breaker).

Two ordering gotchas this consolidation surfaced:

1. tsd_internals.h is included from tsd.h via tsd_generic.h, sometimes
   long before arena.h is loaded (e.g. ckh.c includes ckh.h -> tsd.h
   before jemalloc_internal_includes.h).  TSD_INITIALIZER's expansion
   in tsd_generic.h's function bodies references
   ARENA_DECAY_NTICKS_PER_UPDATE, so it must already be defined.
   Factor the constant into a new minimal header,
   arena_decay_constants.h, that pulls nothing but jemalloc_preamble.h,
   and include it from both arena.h and tsd_internals.h.  arena_t is
   still added as a forward decl in tsd_internals.h -- including
   arena.h there would trigger arena_stats.h -> mutex.h -> tsd.h ->
   re-entry into this very file.

2. extent_dss.h previously included arena_types.h for the arena_t
   pointer type, but arena.h now includes extent_dss.h (it was a
   STRUCTS-section dep).  Forward-decl arena_t in extent_dss.h to
   break that cycle.

Additional forward decls in tcache.h and large.h (arena_t *).  These
were previously satisfied by the master include order loading
arena_types.h before everything else; with arena.h now in the EXTERNS
section, large.h and tcache.h are parsed earlier than arena.h, so
they need to declare arena_t themselves.

jemalloc_internal_externs.h's #include of arena_types.h was
vestigial -- the file uses no arena symbols.  Dropped.
2026-05-29 08:53:58 -07:00
.github/workflows Update Github Actions generation script and upgrade freeBSD actions. 2026-04-21 13:16:44 -07:00
bin Updated jeprof with more symbols to filter. 2024-10-14 10:31:58 -07:00
build-aux Update config.guess and config.sub to the latest versions 2026-03-10 18:14:33 -07:00
doc Introduce pinned extents to contain unpurgeable pages 2026-05-05 10:44:28 -07:00
doc_internal update PROFILING_INTERNALS.md 2022-10-03 10:48:29 -07:00
include Consolidate arena_* header split into arena.h 2026-05-29 08:53:58 -07:00
m4 Support C++17 over-aligned allocation 2019-11-22 10:14:16 -08:00
msvc Move malloc routing into new malloc_dispatch module 2026-05-29 08:53:23 -07:00
scripts Add header dep graph script for cleanup verification 2026-05-28 19:01:12 -04:00
src Consolidate prof_* and tcache_* header splits 2026-05-29 08:53:41 -07:00
test Consolidate arena_* header split into arena.h 2026-05-29 08:53:58 -07:00
.appveyor.yml Update msys to vs2022 for appveyor 2026-04-19 22:49:25 -07:00
.autom4te.cfg Disable autom4te cache. 2014-09-02 17:49:29 -07:00
.clang-format Modify .clang-format to have declarations aligned 2025-05-28 19:22:21 -07:00
.git-blame-ignore-revs Ignore the clang-format changes in the git blame. 2026-03-10 18:14:33 -07:00
.gitattributes fix git handling of newlines on windows 2014-05-07 18:48:39 -04:00
.gitignore Adding trace analysis in preparation for page allocator microbenchmark. 2026-03-10 18:14:33 -07:00
.travis.yml Remove Travis Windows CI for now since it has infra failures. 2026-03-10 18:14:33 -07:00
autogen.sh build: Make autogen.sh accept quoted extra options 2024-01-03 14:20:34 -08:00
ChangeLog Update ChangeLog for release 5.3.1 2026-04-13 17:12:37 -07:00
config.stamp.in Move repo contents in jemalloc/ to top level. 2011-03-31 20:36:17 -07:00
configure.ac Introduce pinned extents to contain unpurgeable pages 2026-05-05 10:44:28 -07:00
COPYING Update copyright dates. 2019-01-25 13:25:20 -08:00
INSTALL.md Add conf.c into msvc and update INSTALL.md 2026-04-20 12:22:59 -07:00
jemalloc.pc.in Expose jemalloc_prefix via pkg-config 2023-09-05 14:30:21 -07:00
Makefile.in Move malloc routing into new malloc_dispatch module 2026-05-29 08:53:23 -07:00
README switch to https 2023-03-09 11:44:02 -08:00
run_tests.sh Introduce scripts to run all possible tests 2017-01-30 17:51:57 -08:00
TUNING.md switch to https 2023-03-09 11:44:02 -08:00

jemalloc is a general purpose malloc(3) implementation that emphasizes
fragmentation avoidance and scalable concurrency support.  jemalloc first came
into use as the FreeBSD libc allocator in 2005, and since then it has found its
way into numerous applications that rely on its predictable behavior.  In 2010
jemalloc development efforts broadened to include developer support features
such as heap profiling and extensive monitoring/tuning hooks.  Modern jemalloc
releases continue to be integrated back into FreeBSD, and therefore versatility
remains critical.  Ongoing development efforts trend toward making jemalloc
among the best allocators for a broad range of demanding applications, and
eliminating/mitigating weaknesses that have practical repercussions for real
world applications.

The COPYING file contains copyright and licensing information.

The INSTALL file contains information on how to configure, build, and install
jemalloc.

The ChangeLog file contains a brief summary of changes for each release.

URL: https://jemalloc.net/