有没有一种方法可以在.jar文件中包含VM参数?

3
我有个用Java实现的游戏,当从脚本中运行过多代码时会出现问题:根据脚本语言的不同,游戏可能会出现"嗝嗝"声,即游戏偶尔会冻结几帧,使游戏有时变得"卡顿"。
经过一些研究,我发现这是垃圾回收器决定运行时发生的。经过更多的研究和测试,我发现使用增量垃圾回收器(通过使用-Xincgc VM参数)可以解决这个问题。是的,我知道它会使GC运行速度慢大约10%,但这是我付出的代价。
有了这些背景信息,现在我想将游戏打包成.jar文件,就像我之前一直在做的那样,但我不知道如何让应用程序使用增量GC而不使用-Xincgc,我也不想创建.bat/.sh文件,而用户只需要双击.jar文件即可。
有没有办法让.jar文件在不需要任何装载程序(.bat/.sh)或包装器的情况下运行增量GC?有没有一种方法可以在.jar文件中包含该参数?
6个回答

5
不,没有办法做到。VM参数只能作为JVM调用的命令行参数提供:Java Tool

3
你可以通过JNLP来实现这一点,它可以配置添加桌面快捷方式并自动更新jar包等功能。

1

仅从一个jar文件,你无法做到这一点。添加Java WebStart可以允许您添加java VM命令。如果您不反对将jar包装在可执行文件中Launch4J也会将jar包装在可执行文件中。它只能制作Windows exe,但它可以在Linux或Windows上制作。我还没有找到一个好的Linux替代品。


0

我不知道有太多的Java应用程序是通过点击jar文件来运行的,除了内部企业或开发人员使用的一些应用。即使是快捷方式也可以指定这一点。更高级的选项包括创建exe文件、作为服务运行,甚至将整个程序包装在安装程序中……如果我们谈论的是Windows,类似的东西也存在于Linux。


0
除了Java Web Start,您可以考虑使用JSMooth进行封装。它会生成一个EXE文件,然后调用JVM - 您可以在那里提供参数。

0

一个选择 - 我一直想知道的是,当参数不足时,是否可以使用Runtime.exec()调用重新运行jar程序?虽然从未尝试过,但似乎是可能的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接