为Java jar分配更多堆空间

时间:2009-05-01 19:29:54

标签: java memory jar heap

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

4 个答案:

答案 0 :(得分:8)

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

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

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

答案 1 :(得分:5)

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

答案 2 :(得分:5)

您可以使用Runtime.getRuntime()。exec()将jar重新启动,并使用您想要的选项。 jar可以包含多个main()方法(在不同的类中),你可以通过exec()调用另一个。

答案 3 :(得分:2)

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