Thi*_*ler 3 java jvm-arguments java-web-start
我的 Java Webstart 应用程序在受控的可信环境中运行。这是一个封闭的内部网络,我可以在其中控制应用程序的启动方式。
我如何将 JVM 参数传递给应用程序,即使它们被 JVM 视为“不安全”以供 webstart 使用?
有几个选项可以将 JVM 参数传递给 webstart。
请注意,我已包含指向本文档的 java 8 版本的链接。所有这些想法在其他 Java 版本中都得到支持和记录,但有时它们的工作方式略有不同,或者限制略有变化。
JNLP 通过 JNLP 文件支持许多 JVM 参数。有些可以通过直接设置完成,例如initial-heap-size和max-heap-size。对于其他设置java-vm-args可以使用。
该JNLP文件语法文件列出了一些支持的Java-VM-args作为“这个版本”但它是不确定的,如果是版本1.4+的例子,或JRE 8.我知道一些未上市的设置实际上是支持的,比如-XX:MaxGCPauseMillis和激活G1垃圾收集器。您可以制作 JNLP,然后用于jinfo -flag MaxGCPauseMillis <pid>测试设置是否已正确传播。
这是首选方法,因为它不需要对 JVM 进行任何直接控制。缺点是仅支持被认为“安全”的特定参数。
当您使用该javaws命令启动 Java Webstart 时,您可以使用 为JAVA_TOOL_OPTIONS从该环境启动的所有 JVM 设置您想要的任何参数。
所以在 Linux 中你可以设置一个不受支持的参数:
export JAVA_TOOL_OPTIONS=-XX:SoftRefLRUPolicyMSPerMB=2000
javaws <my jnlp>
Run Code Online (Sandbox Code Playgroud)
请注意,这将影响使用此系统变量运行的所有 Java 应用程序。因此,为所有用户或特定用户设置此项时应非常小心。仅针对单个应用程序设置此项,如上面的示例那样更安全。
此解决方案的优点是您可以传递您想要的任何参数。缺点是它需要启动应用程序的特定方式,或非常广泛的设置。它还需要控制客户端系统。
您还可以通过更改 JVM 的部署设置来传递 JVM 参数。这可以通过Java 控制面板来完成,它允许您设置默认的运行时设置。
如果要自动执行这些设置,可以使用部署属性文件。不幸的是,该文件的 JRE 特定部分没有记录。手动调整此文件非常容易:
deployment.javaws.jre.0.args=-XX\:SoftRefLRUPolicyMSPerMB\=2000
Run Code Online (Sandbox Code Playgroud)
在自动化此文件时,您必须非常仔细地观察它是否包含所有检测到的 JVM 的这些设置,因此您必须确保更改正确的设置。这也将用于您系统上的所有 Webstart 和小程序。
应该有另一种方法(除了JAVA_TOOL_OPTIONS方法)使用命令行更改参数。该javaws的文件列出了-J运行你的JNLP如下传递参数给JVM,例如选择:
javaws -J-XX:SoftRefLRUPolicyMSPerMB=2000 <my jnlp>
Run Code Online (Sandbox Code Playgroud)
但是我还没有能够得到它来实际设置 JVM 参数。
| 归档时间: |
|
| 查看次数: |
2544 次 |
| 最近记录: |