2009-07-11 118 views
3

我有一个用Java实现的游戏,当从脚本运行过多的代码时遇到了问题:根据脚本语言的不同,游戏可能会出现这样的“打嗝”,游戏会偶尔冻结几帧,有时使游戏“生涩”。有没有办法在.jar中包含VM参数?

经过一番研究,我发现垃圾收集器决定运行时发生了这种情况。经过一些更多的研究和测试后,我发现使用增量垃圾收集器(通过使用-Xincgc VM参数)解决了这个问题。是的,我知道它使GC运行速度降低了10%左右,但这是我付出的代价。

有了这些背景信息,现在我想要做的就是像我一直在做的那样将游戏打包到.jar中,但我不知道如何使用增量GC而不使用-Xincgc,以及我不想在用户只需双击.jar之前创建.bat/.sh文件。

有没有什么办法让增量GC运行.jar而不需要某种加载器(.bat/.sh)或包装它?有没有办法将这个参数包含在.jar中?

回答

5

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

0

我不知道内部公用或开发人员之外的太多java应用程序,人们通过单击jar来运行。即使是快捷方式也可以指定。 Fancier选项存在,可以让你创建一个exe文件,作为一个服务运行,甚至可以把所有的东西包装在一个安装程序中......如果我们在说窗口,那么类似的东西存在于linux中。

3

你绝对可以通过JNLP来做到这一点,它可以配置为在桌面上添加一个快捷方式,并自动将瓶子保持最新等等。

0

除了Java Web Start之外,您可以考虑使用JSMooth进行包装。它提供了一个EXE,然后调用JVM--你可以在那里提供参数。

1

从只是一个jar文件,你不能这样做。添加Java WebStart可以让你添加Java VM命令。如果您不反对将jar包装到可执行文件中,那么Launch4J也会将jar包装到可执行文件中。它只是一个Windows exe文件,但它可以使它在Linux或Windows上。我还没有找到一个好的替代品。

0

一个选项 - 我总是想知道 - 当参数不足时,使用Runtime.exec()调用重新运行jar程序?从来没有尝试过,但似乎可能。

相关问题