Minha primeira pergunta deve ser: por que você está definindo? A JVM do servidor define o máximo para 1/4 do tamanho da memória principal e isso é razoável para a maioria dos aplicativos. Você pode mudar isso construindo sua própria JVM ou pode criar um pseudônimo como
alias java="java -Xmx30g"
O que você pode fazer é verificar o uso da memória periodicamente e matar o processo se você usar mais. Esta é uma ideia muito ruim, é claro.
Em vez disso, o que você pode fazer é executar o programa novamente com os mesmos argumentos, mas com o tamanho máximo da pilha que você deseja. Ou seja, você pode executar o tempo.exec.
Você não pode alterá -lo, pois se reserva o tamanho máximo da memória na inicialização.
BTW, há um equívoco comum de que o heap é a única memória que importa. Isso não é verdade, pois a JVM, os threads pilhas, a memória nativa etc. todos usam alguma memória para que você possa e a pilha de 100 MB, mas a JVM pode estar usando 300 MB.