Heaps in Theseus are used for dynamic memory allocation of chunks smaller than a single page. Their primary purpose is to support Rust's alloc types such as Box, Arc, and Vec.
To use a heap allocator as the backing for these types, the allocator must implement the Rust GlobalAlloc trait.
Important Note on Large Allocations: While you can request large allocations from the heap, Theseus backs them with an individually-created MappedPages object of newly-allocated pages and frames. For better efficiency, use MappedPages instead of the heap for large memory requests.