是否可以使用 Java web start 为 32 位和 64 位 JVM 设置不同的最大堆大小?

Is it possible to have different max heap sizes for 32-bit and 64-bit JVMs using Java web start?

我有一个可以在 1GB 内存中 运行 的 Web 启动应用程序,但是如果它有 4GB 内存,它 运行 对于某些任务来说会快很多。所以我想尽可能使用 4GB...即在 64 位 JVM 上。

这可以吗? JNLP 文件中有没有办法分别指定 32 位 JVM 和 64 位 JVM 的最大堆?

更新

我尝试了一个包含这些行的 JNLP 文件:

<resources>
  <j2se version="1.8+" java-vm-args="-XX:+UseParallelGC -XX:+HeapDumpOnOutOfMemoryError"/>
</resources>

<resources os="Windows" arch="x86">
<j2se href="http://java.sun.com/products/autodl/j2se" onclick="javascript:mytracker(this.href);" version="1.8+"
  max-heap-size="1024m"/>
</resources>

<resources os="Windows" arch="x86_64">
<j2se href="http://java.sun.com/products/autodl/j2se" onclick="javascript:mytracker(this.href);" version="1.8+"
  max-heap-size="4096m"/>
</resources>

没用。架构特定资源块中的其他行确实有效,所以我知道具有 "arch" 属性的资源块已被正确识别和使用。为简洁起见,我删除了此 post 中的其他行。

是的,您可以根据体系结构提供不同的最大堆大小。这是一个例子:

<resources os="Windows" arch="x86">
<j2se href="http://java.sun.com/products/autodl/j2se" onclick="javascript:mytracker(this.href);" version="1.8+"
  max-heap-size="1024m"/>
</resources>

<resources os="Windows" arch="x86_64">
<j2se href="http://java.sun.com/products/autodl/j2se" onclick="javascript:mytracker(this.href);" version="1.8+"
  max-heap-size="4096m"/>
</resources>

注意上面的例子和问题中给出的例子之间的区别!问题示例中的第一个资源标签已被删除。这一点很重要,因为 Java web start 启动器只会识别与 the/a 安装的 JVM 匹配的 first j2se 标签。由于在问题的示例中,第一个 j2se 标记匹配,因此使用它并使用其中指定的参数......而不是后续 j2se 标记中的参数。