xref: /minix3/lib/libc/stdlib/jemalloc.3 (revision 84d9c625bfea59e274550651111ae9edfdc40fbd)
12fe8fb19SBen Gras.\" $NetBSD $
22fe8fb19SBen Gras.\"
32fe8fb19SBen Gras.\" Copyright (c) 1980, 1991, 1993
42fe8fb19SBen Gras.\"	The Regents of the University of California.  All rights reserved.
52fe8fb19SBen Gras.\"
62fe8fb19SBen Gras.\" This code is derived from software contributed to Berkeley by
72fe8fb19SBen Gras.\" the American National Standards Committee X3, on Information
82fe8fb19SBen Gras.\" Processing Systems.
92fe8fb19SBen Gras.\"
102fe8fb19SBen Gras.\" Redistribution and use in source and binary forms, with or without
112fe8fb19SBen Gras.\" modification, are permitted provided that the following conditions
122fe8fb19SBen Gras.\" are met:
132fe8fb19SBen Gras.\" 1. Redistributions of source code must retain the above copyright
142fe8fb19SBen Gras.\"    notice, this list of conditions and the following disclaimer.
152fe8fb19SBen Gras.\" 2. Redistributions in binary form must reproduce the above copyright
162fe8fb19SBen Gras.\"    notice, this list of conditions and the following disclaimer in the
172fe8fb19SBen Gras.\"    documentation and/or other materials provided with the distribution.
182fe8fb19SBen Gras.\" 3. Neither the name of the University nor the names of its contributors
192fe8fb19SBen Gras.\"    may be used to endorse or promote products derived from this software
202fe8fb19SBen Gras.\"    without specific prior written permission.
212fe8fb19SBen Gras.\"
222fe8fb19SBen Gras.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
232fe8fb19SBen Gras.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
242fe8fb19SBen Gras.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
252fe8fb19SBen Gras.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
262fe8fb19SBen Gras.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
272fe8fb19SBen Gras.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
282fe8fb19SBen Gras.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
292fe8fb19SBen Gras.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
302fe8fb19SBen Gras.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
312fe8fb19SBen Gras.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
322fe8fb19SBen Gras.\" SUCH DAMAGE.
332fe8fb19SBen Gras.\"
342fe8fb19SBen Gras.\"     @(#)malloc.3	8.1 (Berkeley) 6/4/93
352fe8fb19SBen Gras.\" $FreeBSD: src/lib/libc/stdlib/malloc.3,v 1.73 2007/06/15 22:32:33 jasone Exp $
362fe8fb19SBen Gras.\"
37f14fb602SLionel Sambuc.Dd June 21, 2011
382fe8fb19SBen Gras.Dt JEMALLOC 3
39f14fb602SLionel Sambuc.Os
402fe8fb19SBen Gras.Sh NAME
412fe8fb19SBen Gras.Nm jemalloc
422fe8fb19SBen Gras.Nd the default system allocator
432fe8fb19SBen Gras.Sh LIBRARY
442fe8fb19SBen Gras.Lb libc
452fe8fb19SBen Gras.Sh SYNOPSIS
462fe8fb19SBen Gras.Ft const char *
472fe8fb19SBen Gras.Va _malloc_options ;
482fe8fb19SBen Gras.Sh DESCRIPTION
492fe8fb19SBen GrasThe
502fe8fb19SBen Gras.Nm
512fe8fb19SBen Grasis a general-purpose concurrent
522fe8fb19SBen Gras.Xr malloc 3
532fe8fb19SBen Grasimplementation specifically designed to be scalable
542fe8fb19SBen Grason modern multi-processor systems.
552fe8fb19SBen GrasIt is the default user space system allocator in
562fe8fb19SBen Gras.Nx .
572fe8fb19SBen Gras.Pp
582fe8fb19SBen GrasWhen the first call is made to one of the memory allocation
592fe8fb19SBen Grasroutines such as
602fe8fb19SBen Gras.Fn malloc
612fe8fb19SBen Grasor
622fe8fb19SBen Gras.Fn realloc ,
632fe8fb19SBen Grasvarious flags that affect the workings of the allocator are set or reset.
642fe8fb19SBen GrasThese are described below.
652fe8fb19SBen Gras.Pp
662fe8fb19SBen GrasThe
672fe8fb19SBen Gras.Dq name
682fe8fb19SBen Grasof the file referenced by the symbolic link named
692fe8fb19SBen Gras.Pa /etc/malloc.conf ,
702fe8fb19SBen Grasthe value of the environment variable
712fe8fb19SBen Gras.Ev MALLOC_OPTIONS ,
722fe8fb19SBen Grasand the string pointed to by the global variable
732fe8fb19SBen Gras.Va _malloc_options
742fe8fb19SBen Graswill be interpreted, in that order, character by character as flags.
752fe8fb19SBen Gras.Pp
762fe8fb19SBen GrasMost flags are single letters.
772fe8fb19SBen GrasUppercase letters indicate that the behavior is set, or on,
782fe8fb19SBen Grasand lowercase letters mean that the behavior is not set, or off.
792fe8fb19SBen GrasThe following options are available.
802fe8fb19SBen Gras.Bl -tag -width "A   " -offset 3n
812fe8fb19SBen Gras.It Em A
822fe8fb19SBen GrasAll warnings (except for the warning about unknown
832fe8fb19SBen Grasflags being set) become fatal.
842fe8fb19SBen GrasThe process will call
852fe8fb19SBen Gras.Xr abort 3
862fe8fb19SBen Grasin these cases.
872fe8fb19SBen Gras.It Em H
882fe8fb19SBen GrasUse
892fe8fb19SBen Gras.Xr madvise 2
902fe8fb19SBen Graswhen pages within a chunk are no longer in use, but the chunk as a whole cannot
912fe8fb19SBen Grasyet be deallocated.
922fe8fb19SBen GrasThis is primarily of use when swapping is a real possibility, due to the high
932fe8fb19SBen Grasoverhead of the
942fe8fb19SBen Gras.Fn madvise
952fe8fb19SBen Grassystem call.
962fe8fb19SBen Gras.It Em J
972fe8fb19SBen GrasEach byte of new memory allocated by
982fe8fb19SBen Gras.Fn malloc ,
992fe8fb19SBen Gras.Fn realloc
1002fe8fb19SBen Graswill be initialized to 0xa5.
1012fe8fb19SBen GrasAll memory returned by
1022fe8fb19SBen Gras.Fn free ,
1032fe8fb19SBen Gras.Fn realloc
1042fe8fb19SBen Graswill be initialized to 0x5a.
1052fe8fb19SBen GrasThis is intended for debugging and will impact performance negatively.
1062fe8fb19SBen Gras.It Em K
1072fe8fb19SBen GrasIncrease/decrease the virtual memory chunk size by a factor of two.
1082fe8fb19SBen GrasThe default chunk size is 1 MB.
1092fe8fb19SBen GrasThis option can be specified multiple times.
1102fe8fb19SBen Gras.It Em N
1112fe8fb19SBen GrasIncrease/decrease the number of arenas by a factor of two.
1122fe8fb19SBen GrasThe default number of arenas is four times the number of CPUs, or one if there
1132fe8fb19SBen Grasis a single CPU.
1142fe8fb19SBen GrasThis option can be specified multiple times.
1152fe8fb19SBen Gras.It Em P
1162fe8fb19SBen GrasVarious statistics are printed at program exit via an
1172fe8fb19SBen Gras.Xr atexit 3
1182fe8fb19SBen Grasfunction.
1192fe8fb19SBen GrasThis has the potential to cause deadlock for a multi-threaded process that exits
1202fe8fb19SBen Graswhile one or more threads are executing in the memory allocation functions.
1212fe8fb19SBen GrasTherefore, this option should only be used with care; it is primarily intended
1222fe8fb19SBen Grasas a performance tuning aid during application development.
1232fe8fb19SBen Gras.It Em Q
1242fe8fb19SBen GrasIncrease/decrease the size of the allocation quantum by a factor of two.
1252fe8fb19SBen GrasThe default quantum is the minimum allowed by the architecture (typically 8 or
1262fe8fb19SBen Gras16 bytes).
1272fe8fb19SBen GrasThis option can be specified multiple times.
1282fe8fb19SBen Gras.It Em S
1292fe8fb19SBen GrasIncrease/decrease the size of the maximum size class that is a multiple of the
1302fe8fb19SBen Grasquantum by a factor of two.
1312fe8fb19SBen GrasAbove this size, power-of-two spacing is used for size classes.
1322fe8fb19SBen GrasThe default value is 512 bytes.
1332fe8fb19SBen GrasThis option can be specified multiple times.
1342fe8fb19SBen Gras.It Em U
1352fe8fb19SBen GrasGenerate
1362fe8fb19SBen Gras.Dq utrace
1372fe8fb19SBen Grasentries for
1382fe8fb19SBen Gras.Xr ktrace 1 ,
1392fe8fb19SBen Grasfor all operations.
1402fe8fb19SBen GrasConsult the source for details on this option.
1412fe8fb19SBen Gras.It Em V
1422fe8fb19SBen GrasAttempting to allocate zero bytes will return a
1432fe8fb19SBen Gras.Dv NULL
1442fe8fb19SBen Graspointer instead of a valid pointer.
1452fe8fb19SBen Gras(The default behavior is to make a minimal allocation and return a
1462fe8fb19SBen Graspointer to it.)
1472fe8fb19SBen GrasThis option is provided for System V compatibility.
1482fe8fb19SBen GrasThis option is incompatible with the
1492fe8fb19SBen Gras.Em X
1502fe8fb19SBen Grasoption.
1512fe8fb19SBen Gras.It Em X
1522fe8fb19SBen GrasRather than return failure for any allocation function,
1532fe8fb19SBen Grasdisplay a diagnostic message on
1542fe8fb19SBen Gras.Dv stderr
1552fe8fb19SBen Grasand cause the program to drop
1562fe8fb19SBen Grascore (using
1572fe8fb19SBen Gras.Xr abort 3 ) .
1582fe8fb19SBen GrasThis option should be set at compile time by including the following in
1592fe8fb19SBen Grasthe source code:
1602fe8fb19SBen Gras.Bd -literal -offset indent
1612fe8fb19SBen Gras_malloc_options = "X";
1622fe8fb19SBen Gras.Ed
1632fe8fb19SBen Gras.Pp
1642fe8fb19SBen Gras.It Em Z
1652fe8fb19SBen GrasEach byte of new memory allocated by
1662fe8fb19SBen Gras.Fn malloc ,
1672fe8fb19SBen Gras.Fn realloc
1682fe8fb19SBen Graswill be initialized to 0.
1692fe8fb19SBen GrasNote that this initialization only happens once for each byte, so
1702fe8fb19SBen Gras.Fn realloc
1712fe8fb19SBen Grasdoes not zero memory that was previously allocated.
1722fe8fb19SBen GrasThis is intended for debugging and will impact performance negatively.
1732fe8fb19SBen Gras.El
1742fe8fb19SBen Gras.Pp
175f14fb602SLionel SambucExtra care should be taken when enabling
176f14fb602SLionel Sambucany of the options in production environments.
1772fe8fb19SBen GrasThe
178f14fb602SLionel Sambuc.Em A ,
179f14fb602SLionel Sambuc.Em J ,
1802fe8fb19SBen Grasand
1812fe8fb19SBen Gras.Em Z
1822fe8fb19SBen Grasoptions are intended for testing and debugging.
1832fe8fb19SBen GrasAn application which changes its behavior when these options are used
1842fe8fb19SBen Grasis flawed.
1852fe8fb19SBen Gras.Sh IMPLEMENTATION NOTES
1862fe8fb19SBen GrasThe
1872fe8fb19SBen Gras.Nm
1882fe8fb19SBen Grasallocator uses multiple arenas in order to reduce lock
1892fe8fb19SBen Grascontention for threaded programs on multi-processor systems.
1902fe8fb19SBen GrasThis works well with regard to threading scalability, but incurs some costs.
1912fe8fb19SBen GrasThere is a small fixed per-arena overhead, and additionally, arenas manage
1922fe8fb19SBen Grasmemory completely independently of each other, which means a small fixed
1932fe8fb19SBen Grasincrease in overall memory fragmentation.
1942fe8fb19SBen GrasThese overheads are not generally an issue,
1952fe8fb19SBen Grasgiven the number of arenas normally used.
1962fe8fb19SBen GrasNote that using substantially more arenas than the default is not likely to
1972fe8fb19SBen Grasimprove performance, mainly due to reduced cache performance.
1982fe8fb19SBen GrasHowever, it may make sense to reduce the number of arenas if an application
1992fe8fb19SBen Grasdoes not make much use of the allocation functions.
2002fe8fb19SBen Gras.Pp
2012fe8fb19SBen GrasMemory is conceptually broken into equal-sized chunks,
2022fe8fb19SBen Graswhere the chunk size is a power of two that is greater than the page size.
2032fe8fb19SBen GrasChunks are always aligned to multiples of the chunk size.
2042fe8fb19SBen GrasThis alignment makes it possible to find
2052fe8fb19SBen Grasmetadata for user objects very quickly.
2062fe8fb19SBen Gras.Pp
2072fe8fb19SBen GrasUser objects are broken into three categories according to size:
2082fe8fb19SBen Gras.Bl -enum -offset 3n
2092fe8fb19SBen Gras.It
2102fe8fb19SBen GrasSmall objects are smaller than one page.
2112fe8fb19SBen Gras.It
2122fe8fb19SBen GrasLarge objects are smaller than the chunk size.
2132fe8fb19SBen Gras.It
2142fe8fb19SBen GrasHuge objects are a multiple of the chunk size.
2152fe8fb19SBen Gras.El
2162fe8fb19SBen Gras.Pp
2172fe8fb19SBen GrasSmall and large objects are managed by arenas; huge objects are managed
2182fe8fb19SBen Grasseparately in a single data structure that is shared by all threads.
2192fe8fb19SBen GrasHuge objects are used by applications infrequently enough that this single
2202fe8fb19SBen Grasdata structure is not a scalability issue.
2212fe8fb19SBen Gras.Pp
2222fe8fb19SBen GrasEach chunk that is managed by an arena tracks its contents in a page map as
2232fe8fb19SBen Grasruns of contiguous pages (unused, backing a set of small objects, or backing
2242fe8fb19SBen Grasone large object).
2252fe8fb19SBen GrasThe combination of chunk alignment and chunk page maps makes it possible to
2262fe8fb19SBen Grasdetermine all metadata regarding small and large allocations in constant time.
2272fe8fb19SBen Gras.Pp
2282fe8fb19SBen GrasSmall objects are managed in groups by page runs.
2292fe8fb19SBen GrasEach run maintains a bitmap that tracks which regions are in use.
2302fe8fb19SBen GrasAllocation requests can be grouped as follows.
2312fe8fb19SBen Gras.Pp
2322fe8fb19SBen Gras.Bl -bullet -offset 3n
2332fe8fb19SBen Gras.It
2342fe8fb19SBen GrasAllocation requests that are no more than half the quantum (see the
2352fe8fb19SBen Gras.Em Q
2362fe8fb19SBen Grasoption) are rounded up to the nearest power of two (typically 2, 4, or 8).
2372fe8fb19SBen Gras.It
2382fe8fb19SBen GrasAllocation requests that are more than half the quantum, but no more than the
2392fe8fb19SBen Grasmaximum quantum-multiple size class (see the
2402fe8fb19SBen Gras.Em S
2412fe8fb19SBen Grasoption) are rounded up to the nearest multiple of the quantum.
2422fe8fb19SBen Gras.It
2432fe8fb19SBen GrasAllocation requests that are larger than the maximum quantum-multiple size
2442fe8fb19SBen Grasclass, but no larger than one half of a page, are rounded up to the nearest
2452fe8fb19SBen Graspower of two.
2462fe8fb19SBen Gras.It
2472fe8fb19SBen GrasAllocation requests that are larger than half of a page, but small enough to
2482fe8fb19SBen Grasfit in an arena-managed chunk (see the
2492fe8fb19SBen Gras.Em K
2502fe8fb19SBen Grasoption), are rounded up to the nearest run size.
2512fe8fb19SBen Gras.It
2522fe8fb19SBen GrasAllocation requests that are too large to fit in an arena-managed chunk are
2532fe8fb19SBen Grasrounded up to the nearest multiple of the chunk size.
2542fe8fb19SBen Gras.El
2552fe8fb19SBen Gras.Pp
2562fe8fb19SBen GrasAllocations are packed tightly together, which can be an issue for
2572fe8fb19SBen Grasmulti-threaded applications.
2582fe8fb19SBen GrasIf you need to assure that allocations do not suffer from cache line sharing,
2592fe8fb19SBen Grasround your allocation requests up to the nearest multiple of the cache line
2602fe8fb19SBen Grassize.
2612fe8fb19SBen Gras.Sh DEBUGGING
2622fe8fb19SBen GrasThe first thing to do is to set the
2632fe8fb19SBen Gras.Em A
2642fe8fb19SBen Grasoption.
2652fe8fb19SBen GrasThis option forces a coredump (if possible) at the first sign of trouble,
2662fe8fb19SBen Grasrather than the normal policy of trying to continue if at all possible.
2672fe8fb19SBen Gras.Pp
2682fe8fb19SBen GrasIt is probably also a good idea to recompile the program with suitable
2692fe8fb19SBen Grasoptions and symbols for debugger support.
2702fe8fb19SBen Gras.Pp
2712fe8fb19SBen GrasIf the program starts to give unusual results, coredump or generally behave
2722fe8fb19SBen Grasdifferently without emitting any of the messages mentioned in the next
2732fe8fb19SBen Grassection, it is likely because it depends on the storage being filled with
2742fe8fb19SBen Graszero bytes.
2752fe8fb19SBen GrasTry running it with the
2762fe8fb19SBen Gras.Em Z
2772fe8fb19SBen Grasoption set;
2782fe8fb19SBen Grasif that improves the situation, this diagnosis has been confirmed.
2792fe8fb19SBen GrasIf the program still misbehaves,
2802fe8fb19SBen Grasthe likely problem is accessing memory outside the allocated area.
2812fe8fb19SBen Gras.Pp
2822fe8fb19SBen GrasAlternatively, if the symptoms are not easy to reproduce, setting the
2832fe8fb19SBen Gras.Em J
2842fe8fb19SBen Grasoption may help provoke the problem.
2852fe8fb19SBen GrasIn truly difficult cases, the
2862fe8fb19SBen Gras.Em U
2872fe8fb19SBen Grasoption, if supported by the kernel, can provide a detailed trace of
2882fe8fb19SBen Grasall calls made to these functions.
2892fe8fb19SBen Gras.Pp
2902fe8fb19SBen GrasUnfortunately,
2912fe8fb19SBen Gras.Nm
2922fe8fb19SBen Grasdoes not provide much detail about the problems it detects;
2932fe8fb19SBen Grasthe performance impact for storing such information would be prohibitive.
2942fe8fb19SBen GrasThere are a number of allocator implementations available on the Internet
2952fe8fb19SBen Graswhich focus on detecting and pinpointing problems by trading performance for
2962fe8fb19SBen Grasextra sanity checks and detailed diagnostics.
297f14fb602SLionel Sambuc.Sh ENVIRONMENT
298f14fb602SLionel SambucThe following environment variables affect the execution of the allocation
299f14fb602SLionel Sambucfunctions:
300f14fb602SLionel Sambuc.Bl -tag -width ".Ev MALLOC_OPTIONS"
301f14fb602SLionel Sambuc.It Ev MALLOC_OPTIONS
302f14fb602SLionel SambucIf the environment variable
303f14fb602SLionel Sambuc.Ev MALLOC_OPTIONS
304f14fb602SLionel Sambucis set, the characters it contains will be interpreted as flags to the
305f14fb602SLionel Sambucallocation functions.
306f14fb602SLionel Sambuc.El
307f14fb602SLionel Sambuc.Sh EXAMPLES
308f14fb602SLionel SambucTo dump core whenever a problem occurs:
309f14fb602SLionel Sambuc.Pp
310f14fb602SLionel Sambuc.Bd -literal -offset indent
311f14fb602SLionel Sambucln -s 'A' /etc/malloc.conf
312f14fb602SLionel Sambuc.Ed
313f14fb602SLionel Sambuc.Pp
314f14fb602SLionel SambucTo specify in the source that a program does no return value checking
315f14fb602SLionel Sambucon calls to these functions:
316f14fb602SLionel Sambuc.Bd -literal -offset indent
317f14fb602SLionel Sambuc_malloc_options = "X";
318f14fb602SLionel Sambuc.Ed
3192fe8fb19SBen Gras.Sh DIAGNOSTICS
3202fe8fb19SBen GrasIf any of the memory allocation/deallocation functions detect an error or
3212fe8fb19SBen Graswarning condition, a message will be printed to file descriptor
3222fe8fb19SBen Gras.Dv STDERR_FILENO .
3232fe8fb19SBen GrasErrors will result in the process dumping core.
3242fe8fb19SBen GrasIf the
3252fe8fb19SBen Gras.Em A
3262fe8fb19SBen Grasoption is set, all warnings are treated as errors.
3272fe8fb19SBen Gras.Pp
3282fe8fb19SBen Gras.\"
3292fe8fb19SBen Gras.\" XXX: The _malloc_message should be documented
3302fe8fb19SBen Gras.\"	 better in order to be worth mentioning.
3312fe8fb19SBen Gras.\"
3322fe8fb19SBen GrasThe
3332fe8fb19SBen Gras.Va _malloc_message
3342fe8fb19SBen Grasvariable allows the programmer to override the function which emits
3352fe8fb19SBen Grasthe text strings forming the errors and warnings if for some reason
3362fe8fb19SBen Grasthe
3372fe8fb19SBen Gras.Dv stderr
3382fe8fb19SBen Grasfile descriptor is not suitable for this.
3392fe8fb19SBen GrasPlease note that doing anything which tries to allocate memory in
3402fe8fb19SBen Grasthis function is likely to result in a crash or deadlock.
3412fe8fb19SBen Gras.Pp
3422fe8fb19SBen GrasAll messages are prefixed by
3432fe8fb19SBen Gras.Dq Ao Ar progname Ac Ns Li \&: Pq malloc .
3442fe8fb19SBen Gras.Sh SEE ALSO
3452fe8fb19SBen Gras.Xr emalloc 3 ,
3462fe8fb19SBen Gras.Xr malloc 3 ,
3472fe8fb19SBen Gras.Xr memory 3 ,
3482fe8fb19SBen Gras.Xr memoryallocators 9
3492fe8fb19SBen Gras.\"
3502fe8fb19SBen Gras.\" XXX: Add more references that could be worth reading.
3512fe8fb19SBen Gras.\"
3522fe8fb19SBen Gras.Rs
3532fe8fb19SBen Gras.%A Jason Evans
3542fe8fb19SBen Gras.%T "A Scalable Concurrent malloc(3) Implementation for FreeBSD"
3552fe8fb19SBen Gras.%D April 16, 2006
3562fe8fb19SBen Gras.%O BSDCan 2006
3572fe8fb19SBen Gras.%U http://people.freebsd.org/~jasone/jemalloc/bsdcan2006/jemalloc.pdf
3582fe8fb19SBen Gras.Re
3592fe8fb19SBen Gras.Rs
3602fe8fb19SBen Gras.%A Poul-Henning Kamp
3612fe8fb19SBen Gras.%T "Malloc(3) revisited"
3622fe8fb19SBen Gras.%I USENIX Association
3632fe8fb19SBen Gras.%B Proceedings of the FREENIX Track: 1998 USENIX Annual Technical Conference
3642fe8fb19SBen Gras.%D June 15-19, 1998
3652fe8fb19SBen Gras.%U http://www.usenix.org/publications/library/proceedings/usenix98/freenix/kamp.pdf
3662fe8fb19SBen Gras.Re
3672fe8fb19SBen Gras.Rs
3682fe8fb19SBen Gras.%A Paul R. Wilson
3692fe8fb19SBen Gras.%A Mark S. Johnstone
3702fe8fb19SBen Gras.%A Michael Neely
3712fe8fb19SBen Gras.%A David Boles
3722fe8fb19SBen Gras.%T "Dynamic Storage Allocation: A Survey and Critical Review"
3732fe8fb19SBen Gras.%D 1995
3742fe8fb19SBen Gras.%I University of Texas at Austin
3752fe8fb19SBen Gras.%U ftp://ftp.cs.utexas.edu/pub/garbage/allocsrv.ps
3762fe8fb19SBen Gras.Re
3772fe8fb19SBen Gras.Sh HISTORY
3782fe8fb19SBen GrasThe
3792fe8fb19SBen Gras.Nm
3802fe8fb19SBen Grasallocator became the default system allocator first in
3812fe8fb19SBen Gras.Fx 7.0
3822fe8fb19SBen Grasand then in
3832fe8fb19SBen Gras.Nx 5.0 .
3842fe8fb19SBen GrasIn both systems it replaced the older so-called
3852fe8fb19SBen Gras.Dq phkmalloc
3862fe8fb19SBen Grasimplementation.
3872fe8fb19SBen Gras.Sh AUTHORS
388*84d9c625SLionel Sambuc.An Jason Evans Aq Mt jasone@canonware.com
389