Version 1 (modified by 15 years ago) ( diff ) | ,
---|
Here is a glossary of terms used in FastMalloc. Sometimes, more than one term is used for the same thing.
sizeclass | class
number from [1, kNumClasses] identifying a size grouping 0 sizeclass means large allocation objects of the same sizeclass: have the same true allocation size are in the same free list
classindex
location of 'size' in the sizeclass array classindex values are cached to avoid repeat math
span | descriptor
metadata for a contiguous run of pages either a single large allocation or parceled into bytesize(sizeclass) units maintains a free list for those units maintains a total reference count for those units
pagemap
[pageID => span] mapping for all pageIDs in the address space more than one pageID can map to the same span
page
kPageSize chunk of memory
pageID
number from [0, kNumPages] identifying a page pageID * kPageSize = address of page
object
item in a free list
split (verb)
break a span into two parts (used by memalign)
carve (verb)
allocate a span, possibly splitting it (used by pageheap allocation functions)
pageheap
central span and page allocator requires locking maintains the pagemap keeps free spanlists for spans
spanlist
2 linked lists of spans: mmaped (vm live) madvised (vm dead)
threadcache | heap | threadheap
per-thread free lists for various size classes
central_cache
central list for size classes one lock per list all normal-sized allocation originates in the central_cache (but may be cached in a threadcache)
Note:
See TracWiki
for help on using the wiki.