Currently the root map is paged into memory and accessed using addresses . There doesn't seem to be a good reason why the root map couldn't be represented using a byte array and held in the data image, which imo would be more in the spirit of a Java-in-Java VM. It would require allocating and creating the root map at the end of writing the boot image in memory and then having an extra copy of the root map into the boot image once it was computed. We already do a similar job for the boot record. It needs to be at the end of the image as we don't know its length.