It depends on the JVM, but it is definitely not guaranteed to be contiguous. HotSpot has been using a bunch of generations, while IBM JDK and JRockit do not. I believe that the sweep / compress algorithm is used in the garbage collection processes of IBM and JRockit, which in practice should lead to an adjacent heap.
source share