2010-10-25 07:18:29 +08:00
|
|
|
Following are change highlights associated with official releases. Important
|
|
|
|
bug fixes are all mentioned, but internal enhancements are omitted here for
|
|
|
|
brevity (even though they are more fun to write about). Much more detail can be
|
|
|
|
found in the git revision history:
|
|
|
|
|
|
|
|
http://www.canonware.com/cgi-bin/gitweb.cgi?p=jemalloc.git
|
|
|
|
git://canonware.com/jemalloc.git
|
|
|
|
|
2010-10-30 11:16:39 +08:00
|
|
|
* 2.0.1
|
|
|
|
|
|
|
|
Bug fixes:
|
|
|
|
- Fix a race condition in heap profiling that could cause undefined behavior
|
|
|
|
if opt.prof_accum were disabled.
|
|
|
|
- Add missing mutex unlocks for some OOM error paths in the heap profiling
|
|
|
|
code.
|
|
|
|
- Fix a compilation error for non-C99 builds.
|
|
|
|
|
2010-10-25 07:18:29 +08:00
|
|
|
* 2.0.0
|
|
|
|
|
|
|
|
This version focuses on the experimental *allocm() API, and on improved
|
|
|
|
run-time configuration/introspection. Nonetheless, numerous performance
|
|
|
|
improvements are also included.
|
|
|
|
|
|
|
|
New features:
|
2010-10-25 07:54:40 +08:00
|
|
|
- Implement the experimental {,r,s,d}allocm() API, which provides a superset
|
|
|
|
of the functionality available via malloc(), calloc(), posix_memalign(),
|
|
|
|
realloc(), malloc_usable_size(), and free(). These functions can be used to
|
|
|
|
allocate/reallocate aligned zeroed memory, ask for optional extra memory
|
|
|
|
during reallocation, prevent object movement during reallocation, etc.
|
|
|
|
- Replace JEMALLOC_OPTIONS/JEMALLOC_PROF_PREFIX with MALLOC_CONF, which is
|
|
|
|
more human-readable, and more flexible. For example:
|
|
|
|
JEMALLOC_OPTIONS=AJP
|
|
|
|
is now:
|
|
|
|
MALLOC_CONF=abort:true,fill:true,stats_print:true
|
|
|
|
- Port to Apple OS X. Sponsored by Mozilla.
|
|
|
|
- Make it possible for the application to control thread-->arena mappings via
|
|
|
|
the "thread.arena" mallctl.
|
|
|
|
- Add compile-time support for all TLS-related functionality via pthreads TSD.
|
|
|
|
This is mainly of interest for OS X, which does not support TLS, but has a
|
|
|
|
TSD implementation with similar performance.
|
|
|
|
- Override memalign() and valloc() if they are provided by the system.
|
|
|
|
- Add the "arenas.purge" mallctl, which can be used to synchronously purge all
|
|
|
|
dirty unused pages.
|
|
|
|
- Make cumulative heap profiling data optional, so that it is possible to
|
|
|
|
limit the amount of memory consumed by heap profiling data structures.
|
|
|
|
- Add per thread allocation counters that can be accessed via the
|
|
|
|
"thread.allocated" and "thread.deallocated" mallctls.
|
2010-10-25 07:18:29 +08:00
|
|
|
|
|
|
|
Incompatible changes:
|
2010-10-25 07:54:40 +08:00
|
|
|
- Remove JEMALLOC_OPTIONS and malloc_options (see MALLOC_CONF above).
|
|
|
|
- Increase default backtrace depth from 4 to 128 for heap profiling.
|
|
|
|
- Disable interval-based profile dumps by default.
|
2010-10-25 07:18:29 +08:00
|
|
|
|
|
|
|
Bug fixes:
|
|
|
|
- Remove bad assertions in fork handler functions. These assertions could
|
|
|
|
cause aborts for some combinations of configure settings.
|
|
|
|
- Fix strerror_r() usage to deal with non-standard semantics in GNU libc.
|
|
|
|
- Fix leak context reporting. This bug tended to cause the number of contexts
|
|
|
|
to be underreported (though the reported number of objects and bytes were
|
|
|
|
correct).
|
|
|
|
- Fix a realloc() bug for large in-place growing reallocation. This bug could
|
|
|
|
cause memory corruption, but it was hard to trigger.
|
|
|
|
- Fix an allocation bug for small allocations that could be triggered if
|
|
|
|
multiple threads raced to create a new run of backing pages.
|
|
|
|
- Enhance the heap profiler to trigger samples based on usable size, rather
|
|
|
|
than request size.
|
|
|
|
- Fix a heap profiling bug due to sometimes losing track of requested object
|
|
|
|
size for sampled objects.
|
|
|
|
|
|
|
|
* 1.0.3
|
|
|
|
|
|
|
|
Bug fixes:
|
|
|
|
- Fix the libunwind-based implementation of stack backtracing (used for heap
|
|
|
|
profiling). This bug could cause zero-length backtraces to be reported.
|
|
|
|
- Add a missing mutex unlock in library initialization code. If multiple
|
|
|
|
threads raced to initialize malloc, some of them could end up permanently
|
|
|
|
blocked.
|
|
|
|
|
|
|
|
* 1.0.2
|
|
|
|
|
|
|
|
Bug fixes:
|
|
|
|
- Fix junk filling of large objects, which could cause memory corruption.
|
|
|
|
- Add MAP_NORESERVE support for chunk mapping, because otherwise virtual
|
|
|
|
memory limits could cause swap file configuration to fail. Contributed by
|
|
|
|
Jordan DeLong.
|
|
|
|
|
|
|
|
* 1.0.1
|
|
|
|
|
|
|
|
Bug fixes:
|
|
|
|
- Fix compilation when --enable-fill is specified.
|
|
|
|
- Fix threads-related profiling bugs that affected accuracy and caused memory
|
|
|
|
to be leaked during thread exit.
|
|
|
|
- Fix dirty page purging race conditions that could cause crashes.
|
|
|
|
- Fix crash in tcache flushing code during thread destruction.
|
|
|
|
|
|
|
|
* 1.0.0
|
|
|
|
|
|
|
|
This release focuses on speed and run-time introspection. Numerous
|
|
|
|
algorithmic improvements make this release substantially faster than its
|
|
|
|
predecessors.
|
|
|
|
|
|
|
|
New features:
|
|
|
|
- Implement autoconf-based configuration system.
|
|
|
|
- Add mallctl*(), for the purposes of introspection and run-time
|
|
|
|
configuration.
|
|
|
|
- Make it possible for the application to manually flush a thread's cache, via
|
|
|
|
the "tcache.flush" mallctl.
|
|
|
|
- Base maximum dirty page count on proportion of active memory.
|
|
|
|
- Compute various addtional run-time statistics, including per size class
|
|
|
|
statistics for large objects.
|
|
|
|
- Expose malloc_stats_print(), which can be called repeatedly by the
|
|
|
|
application.
|
|
|
|
- Simplify the malloc_message() signature to only take one string argument,
|
|
|
|
and incorporate an opaque data pointer argument for use by the application
|
|
|
|
in combination with malloc_stats_print().
|
|
|
|
- Add support for allocation backed by one or more swap files, and allow the
|
|
|
|
application to disable over-commit if swap files are in use.
|
|
|
|
- Implement allocation profiling and leak checking.
|
|
|
|
|
|
|
|
Removed features:
|
|
|
|
- Remove the dynamic arena rebalancing code, since thread-specific caching
|
|
|
|
reduces its utility.
|
|
|
|
|
|
|
|
Bug fixes:
|
|
|
|
- Modify chunk allocation to work when address space layout randomization
|
|
|
|
(ASLR) is in use.
|
|
|
|
- Fix thread cleanup bugs related to TLS destruction.
|
|
|
|
- Handle 0-size allocation requests in posix_memalign().
|
|
|
|
- Fix a chunk leak. The leaked chunks were never touched, so this impacted
|
|
|
|
virtual memory usage, but not physical memory usage.
|
|
|
|
|
|
|
|
* linux_20080828a, linux_20080827a
|
|
|
|
|
|
|
|
These snapshot releases are the simple result of incorporating Linux-specific
|
|
|
|
support into the FreeBSD malloc sources.
|
|
|
|
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
vim:filetype=text:textwidth=80
|