以编程方式设置最大 Java 堆大小
有没有办法以编程方式设置最大 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
不适用于任何 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.)
您需要了解 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.