These areas are allocated below the low virtual address
space reserved by Xen: the minor heap has a single 2MB extent
that grows in 4 kB chunks, and the major heap has the remainder
of virtual memory, growing in 2MB superpage chunks using the
extent allocator. Memory mapping large contiguous areas is usually
discouraged to allow Address Space Randomization (ASR) to
protect against buffer overflows [16], and so a normal userspace
garbage collector maintains a page table to track allocated heap
chunks. Mirage unikernels avoid ASR at runtime in favour of a
more specialised security model (§2.3), and guarantee a contiguous
virtual address space, simplifying runtime memory management.