Currently, when virtual memory is requested from the OS, this is done via MMTk's Mmapper class. This allocates memory in 1MB chunks, which are tracked in a byte array, which occupies 8K in the 32-bit memory model, but clearly doesn't scale to 64-bit.
(Triage only) keep the existing model, and only grow memory modestly for 64-bit.
(Triage only) keep the existing model, grow memory less modestly, while increasing the Mmap granularity. This could have a negative impact on performance.
Use a multi-level table, perhaps a tree or a top-level hash to lower level byte maps.
Get rid of the mmap table altogether and call out to the Linux kernel for page information, e.g. via /proc/self/pagemap