以编程方式设置最大 Java 堆大小

发布于 2024-10-14 09:59:57 字数 146 浏览 3 评论 0原文

有没有办法以编程方式设置最大 java 堆大小而不是作为 vm 参数?

像这样的东西:

System.getProperties().put("<heap variable>", "1000m");

Is there a way to set the max java heap size programmatically instead of as a vm argument?

Something like:

System.getProperties().put("<heap variable>", "1000m");

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

窗影残 2024-10-21 09:59:57

不适用于任何 Hotspot JVM。 JVM 堆参数只能在命令行上指定,然后在 JVM 的生命周期内固定。

对于 Hotspot Java 实现,“更改”应用程序堆大小的唯一方法是在新的 JVM 中使用不同的命令行参数重新启动它。

(我依稀记得其他一些供应商的 JVM确实允许在运行的 JVM 中更改某些堆参数。也许有人可以澄清一下。)

Not with any Hotspot JVM. The JVM heap parameters can only be specified on the command line, and are then fixed for the lifetime of the JVM.

With Hotspot Java implementations, the only way to "change" the heap size of an application is to relaunch it in a new JVM with different command line parameters.

(I vaguely recall that JVMs from some other vendors do allow some heap parameters to be changed in a running JVM. Perhaps someone can clarify.)

謌踐踏愛綪 2024-10-21 09:59:57

您需要了解 JVM 空间与其运行环境之间的区别。
您提到的参数(以及任何其他 -X 或 -XX 参数)是运行 JVM 的环境提供的环境设置。

在 Windows XP 机器中,Windows 操作系统是 JVM 的发起者。因此,JVM 不应该能够更改操作系统提供的参数。这是合乎逻辑的。

@Stephen C,也许您对提供此功能的某些虚拟机实现的看法是正确的,但我不确定。

You need to understand the difference between JVM space and the environment it runs in.
The parameter that you have mentioned (and any other -X or -XX parameter) are environment set up provided by the environment that runs the JVM.

In an Windows XP machine, Windows OS is THE initiator of the JVM. Hence JVM should not be able to change a parameter that the OS provided. It's logical.

@Stephen C, may be you are right about some VM implementation that provide this feature, but I am not sure.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文