我们可以使用JVM参数来限制分配给JVM堆的内存。

我想知道在开发时间内是否可以在Java程序中进行硬编码,而不是在运行程序时在命令行中添加JVM参数。可能吗?

有帮助吗?

解决方案

我的第一个问题应该是,为什么要设置它?服务器JVM将最大值设置为主内存大小的1/4,这对于大多数应用程序都是合理的。您可以通过构建自己的JVM来更改此操作,也可以创建一个类似的别名

alias java="java -Xmx30g"

您可以做的是定期检查内存使用情况,并使用更多使用,并杀死该过程。当然,这是一个非常糟糕的主意。

取而代之的是,您可以做的是使用相同的参数再次运行程序,但要使用最大的堆大小。即,您可以运行时。Exec。

您无法更改它,因为它保留启动时的最大内存大小。

顺便说一句,人们普遍认为堆是唯一重要的内存。这不是事实,因为JVM,线程堆栈,本机内存等都使用了一些内存,因此您可以使用100 MB的堆,但JVM可以使用300 MB。

其他提示

您是否正在尝试在运行时更改堆尺寸?您无法执行此操作,因为当JVM启动时必须设置堆尺寸值,然后无法更改。

不,你不能这样做。您可以做的一切都是将参数添加到命令行中以管理堆大小。

一个肮脏的解决方案可能是在另一个具有不同堆大小的过程中产生另一个过程,但我认为这不是您想要的。 这里 有一个例子。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top