因为我们知道,我们可以设置-Xmx1024M
在window->preferences->java->installed jres->edit->default vm arguments
在日食.但是当我将这个项目打包成一个可运行的jar文件时,如何设置-Xmx1024M
运行jar的时间java -jar A.jar
?
非常感谢!
Phi*_*kle 121
不幸的是,现有答案在一个关键点上是错误的.
-Xmx
必须传递给Java运行时环境,而不是传递给执行的jar.
错误:
java -jar JavaApplication.jar -Xmx1024m
Run Code Online (Sandbox Code Playgroud)
正确:
java -Xmx1024m -jar JavaApplication.jar
Run Code Online (Sandbox Code Playgroud)
更具体地说,java启动程序需要使用如下:
java [options] -jar file.jar [arguments]
[options]
传递给Java运行时环境[arguments]
传递给main函数该-Xmx
参数属于(非标准)JVM选项,并且 - 作为选项 - 需要在-jar之前(或至少在file.jar之前)列出.JVM将无法识别-Xmx
传递给main函数的参数,如其他答案中所建议的那样.
小智 9
尝试java -Xmx1024m
文件名。
我在 StackOverflow 上找到了这个Java 选项 -Xmx 代表什么?例如,当我启动 Netbeans 时使用它。
像这样使用它
java -Xmx1024m -jar JavaApplication.jar
Run Code Online (Sandbox Code Playgroud)
info:
-Xmxn
指定内存分配池的最大大小(以字节为单位)。该值必须是 1024 的倍数且大于 2MB。附加字母 k 或 K 表示千字节,或附加 m 或 M 表示兆字节。默认值为 64MB。在 Solaris 7 和 Solaris 8 SPARC 平台上,该值的上限约为 4000m;在 Solaris 2.6 和 x86 平台上,该值的上限约为 2000m,减去开销量。
三种方法:
最后一个选项是"邪恶的",但不需要您的用户做任何额外的努力.这是一个示例代码块:
public static void main(String[] args) throws IOException, URISyntaxException {
String currentPath=SampleJavaApp.class
.getProtectionDomain()
.getCodeSource().getLocation()
.toURI().getPath()
.replace('/', File.separator.charAt(0)).substring(1);
if(args.length==0 && Runtime.getRuntime().maxMemory()/1024/1024<980) {
Runtime.getRuntime().exec("java -Xmx1024m -jar "+currentPath+" restart");
return;
}
}
Run Code Online (Sandbox Code Playgroud)