O heap não é alocado da RAM. É alocado do espaço de endereço virtual. Você pode até ter mais heap do que você tem RAM. Muito mais. A Java VM não tem acesso direto a endereços físicos (endereços de RAM) e não é limitada por eles, mais do que qualquer outro processo em seu sistema.