more like a queue... priority queues are often implemented as heaps. Heaps are good for things other than FIFO/LIFO.
It's probably just using it to store the objects so it can reliably resolve object references in nlogn time. Partly depends on what kind of heap it is.
Can you tell I've been taking a course in data structures this term:)
Question... on my implementation, the max_heap switch is in kilobytes, which makes that number 800 GB, not MB. Try knocking off the last three zeros and then check your memory consumption. The heap size parameters are not standardized, so one implementation is free to refer to maxheap in kilobytes while another one might do it in bytes. In short, the number can be good for the vendor's implementation of Java, while complete GIGO for yours.