blob: 0eedd64d612604aa308f1905c018993d99b812eb (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
downsides of arena allocation
=============================
- cannot use "dead" space after variables (otherwise only accessible
through sbrk).
- to avoid having to pass around an arena pointer, we need to have metadata
at the beginning of each 4K page (or whatever the minimum size of an
arena block is).
- related: large arrays. these would need to be splitted, even if there
is enough contiguous memory.
- de-allocation of individual objects is tricky. it *can* be done, but it can
only be filled with data from the same arena, and requires an additional
check to see if there is a free hole of memory and if it is large enough.
- threads cannot share an arena (unless it is "closed" for all but one thread)
i.e. cannot share for writing
|