我的第一个问题应该是,为什么要设置它?服务器JVM将最大值设置为主内存大小的1/4,这对于大多数应用程序都是合理的。您可以通过构建自己的JVM来更改此操作,也可以创建一个类似的别名
alias java="java -Xmx30g"
您可以做的是定期检查内存使用情况,并使用更多使用,并杀死该过程。当然,这是一个非常糟糕的主意。
取而代之的是,您可以做的是使用相同的参数再次运行程序,但要使用最大的堆大小。即,您可以运行时。Exec。
您无法更改它,因为它保留启动时的最大内存大小。
顺便说一句,人们普遍认为堆是唯一重要的内存。这不是事实,因为JVM,线程堆栈,本机内存等都使用了一些内存,因此您可以使用100 MB的堆,但JVM可以使用300 MB。