Para ver la memoria libre en um momento dado se necesita un snippet sencillo como este.

// vemos el heap en bytes
long heap = Runtime.getRuntime().totalMemory();    
// y aca el max del heap disponible en esta jvm
long heapMax = Runtime.getRuntime().maxMemory();
// y aca finalmente lo que esta libre
long heapFree = Runtime.getRuntime().freeMemory();

Vale aclarar que lo que se ve libre varia constantemente ya que el garbage collector elimina objetos que ya no estan referenciados a su gusto y placer. Hay diferentes tecnicas para esto y esto se configura con diferentes argumentos a la hora de inicializar el programa Java.