ChangeLog
- implemented deallocation of empty data segments if enough
free memory is available
- non-empty wilderness are now handled by middle-sized
management ensuring good-fit allocation on wilderness
(greatly reduces internal fragmentation in certain situations)
- support for 16 byte alignment added (for SSE applications)
- fixed bug when setting size of split blocks
- modified message and error output
- changed Rmalloc tracing to write more data
- removed STAT_FRAGMENTATION (was not used anymore)
- guarded munmap by mutex in mt-mode (seems to be not mt-safe)
- non-handled (large) blocks are now part of statistics
- changed license to LGPL
- ported to Win32
- guarded special functions by defines (mmap, getpagesize, etc.)
- moved trace.fd to trace.file (file IO instead of read/write)
- C++ operators now really throw std::bad_alloc
- handling of NULL pointers in allocation improved; no more ABORT but NULL-returns
- in check_rmalloc: global heap was not checked
- consistency check of wilderness, full/non-empty containers
- alignment of size for heap-allocation
- removed bug in
r_realloc (wrong size for given block)
- NO_OF_CLASSES, NO_OF_SMALL must be even; changed
- reduced internal fragmentation for small chunks by using a special type
(sblock_t)
- minor bugfixes for non-pthread mode
- added USE_THR_HACKS to simulate thread-specific-data
- restructured container-management; the empty-list not needed anymore
- removed needless data-segment-structure
- removed needless empty-lists for containers
- another major rewrite: added coalescing similar to LKmalloc
- maintained container-managment for small blocks and coalescing strategy for
middle sized blocks
- removed rounding up of size-requests
- no longer memory-transfers between heaps
v0.99
- major rewrite with containers which can be reused by other size-classes =>
led to massive fragmentation
v0.98.3
- various code-cleanups
- removed size-class generation (now in extra file)
v0.98.2
- replaced "real" thread-private-data by simulated one
v0.98.1
- active fragmentation statistics with STAT_FRAGMENTATION (prints "real"
consumption)
- moved top_pad into data-segment-structure
v0.98
- used remaining blocks of each data-segment to serve future requests,
thereby reducing fragmentation (left-over-blocks)
v0.97
- small bugfixes
- top_pad is now heap-specific and adjusted dynamicly (1/TOP_PAD_FRACTION of
mem_used)
- changed size-field in nodes to slot; avoided to many calls to size_to_class
- moved handling of sizes larger than biggest size-class to operating-system
(via malloc or mmap)
- fixed error-handling if no memory is available from the OS (sends kill to
own process instead of exit(1))
- added another trace-method: trace by allocation
v0.96
- rewritten chunk-handling: heap -> block -> chunk
- exchange of blocks between thread-heaps and global-heaps to reduce overall
memory-consumption
v0.95
- round sizes to next size-class to guarantee, that there is a free chunk in
the list (avoid searching)
- increased number of size-classes; changed size_to_class to use a binary
search instead of linear
- ok. maybe 10 MB for the DEFAULT_TOP_PAD is better ?
- implemented trace-functionality for thread-heaps
v0.94
- rearranged code for system-allocation (mmap and malloc had too much in
common to be separated)
- removed most messages when mutices were locked
- set MMAP to be default, even when malloc is not overwritten
- changed "r_mallinfo" to "rmallinfo" and added declaration in rmalloc.h
v0.93
- changed heap handling, now each thread has a private heap; if the thread
terminates, this heap is then marked as free and can be used by a new thread
- removed creation of first heap (besides global-heap), this will now be done
on demand (in r_malloc)
- DEFAULT_TOP_PAD reduced to 5 MB (should also be enough)
- heap-list is no longer a circular list (just a linear one)
- heaps can now be aligned to the cache-line-size (ALIGN_TO_CACHE_SIZE); off
by default
- added wrapper for mallinfo which calls internal r_mallinfo (r_mallinfo uses
mallinfo-struct with ulong fields)
v0.92
- replaced simulated thread-specific-data by real one
v0.91
- fixed bug/feature when using malloc as system-alloc: only requested chunks
of needed size were allocated, not plus DEFAULT_TOP_PAD
v0.90