Mi primera pregunta debería ser, ¿por qué la estás configurando? El servidor JVM establece el máximo en 1/4 del tamaño de memoria principal y esto es razonable para la mayoría de las aplicaciones. Podrías cambiar esto construyendo tu propio JVM o puedes crear un alias como
alias java="java -Xmx30g"
Lo que puede hacer es verificar el uso de la memoria periódicamente y matar el proceso si usa más. Esta es una muy mala idea, por supuesto.
En cambio, lo que puede hacer es ejecutar el programa nuevamente con los mismos argumentos, pero con el tamaño máximo de montón que desea. Es decir, puedes ejecutar tiempo.exec.
No puede cambiarlo, ya que se reserva el tamaño máximo de la memoria al inicio.
Por cierto, hay una idea errónea común de que el montón es la única memoria que importa. Esto no es cierto ya que el JVM, las pilas de subprocesos, la memoria nativa, etc., usan algo de memoria, por lo que puede que el montón sea de 100 MB pero el JVM podría estar usando 300 MB.