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

Posted

技术标签:

【中文标题】以编程方式设置最大 Java 堆大小【英文标题】:programmatically setting max java heap size 【发布时间】:2011-06-14 22:15:36 【问题描述】:

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

类似:

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

【问题讨论】:

How to increase java heap size programmatically 的可能重复项 【参考方案1】:

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

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

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

【讨论】:

【参考方案2】:

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

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

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

【讨论】:

以上是关于以编程方式设置最大 Java 堆大小的主要内容,如果未能解决你的问题,请参考以下文章

了解java虚拟机—非堆相关参数设置

我在哪里可以在 Windows pc 上永久设置 java 堆大小?

C# WPF 如何以编程方式设置控件的位置、宽度和高度?

堆大小设置

是否可以动态更改最大 Java 堆大小?

是否可以在 64 位 java/linux 环境中运行具有 8gb 堆大小的 Weblogic