9

当您通过命令行运行程序时,您可以使用java -Xms -Xmx来指定堆大小。如果程序要通过双击 .jar 文件来运行,有没有办法使用比标准更多的堆?

4

4 回答 4

8

不,这就是为什么我经常使用这些参数制作一个 .bat 或 .sh 文件并指导用户运行它而不是 .jar。不幸的是,不得不弹出一个命令提示符窗口有点难看,但这无济于事。

附带的好处是,如果您的应用程序冻结,您可以指导用户放入pause批处理文件(或自己做),然后您可以看到发生的任何堆栈跟踪。

编辑:您还可以使用可执行包装器,例如JSmoothLaunch4J,而不是批处理文件。但是,您会失去一些跨平台兼容性。

于 2009-05-01T19:32:12.383 回答
5

您可以使用运行 .jar 的批处理文件,而不是直接双击 .jar 文件java -jar -Xms -Xmx your_file.jar。从用户的角度来看,它是相同的,但它使您可以更好地控制实际运行的命令。

于 2009-05-01T19:33:06.377 回答
5

您可以使用带有所需选项的 Runtime.getRuntime().exec() 让 jar 重新启动。jar 可以包含多个 main() 方法(在不同的类中),您可以通过 exec() 调用另一个。

于 2009-05-01T20:53:43.860 回答
2

您可以使用JSmooth或类似的包装器,它会创建一个 EXE 文件,该文件使用必要的参数启动 JVM。这样您就可以避免使用 .bat 文件及其控制台对话框。还有一种方法是使用 Runtime.exec 或 ProcessBuilder 在新进程中启动实际程序。

于 2009-05-01T19:38:48.813 回答