JAVA -Xms500M -Xmx1800M -XX:+UseConcMarkSweepGC -classpath C:\XYZ\MY_installer\lib\jlex.jar;C:\XYZ\MY_installer\lib\antlr.jar;C:\XYZ\MY_installer\lib\mytemplate.jar;C:\XYZ\MY_installer\lib\log4j-1.2-api-2.0-beta8.jar;C:\XYZ\MY_installer\lib\log4j-api-2.0-beta8.jar;C:\XYZ\MY_installer\lib\log4j-core-2.0-beta8.jar;C:\WORKSPACES\delnaz\del_prj; -DENVFILE=C:\XYZ\MY_installer\bin\escat.ini utilities.graph.GraphDriver C:\XYZ\MY_installer "C:\WORKSPACES\delnaz\del_prj\del.prj" "C:\WORKSPACES\delnaz\del_prj" 1
问题:这是需要上面描述的jar环境的命令,如果我将最大堆大小1400转换为1000,虽然我知道jar不会对堆做任何事情,但是工作正常。但我想知道它正在改变的原因,或者可能是什么原因。
String cmdArr[] = {"cmd.exe", "/C" , cmdString};
ProcessBuilder pb = new ProcessBuilder(cmdArr);
Map<String, String> env = pb.environment();
env.put("PATH", System.getenv("PATH"));
env.put("ROOT", rootPath);
env.put("SYSTEMROOT", System.getenv("SYSTEMROOT"));
if(cmdString.endsWith("cfe.bat"))
pb.directory(new File("TextFiles"));
else
pb.directory(new File(Workspace_path));
process = pb.start();
java版本是:
java version "1.7.0_21"
Java(TM) SE Runtime Environment (build 1.7.0_21-b11)
Java HotSpot(TM) Client VM (build 23.21-b01, mixed mode, sharing)
Windows 7 Enterprise
RAM 4GB
32 bit OS
另一个蠢货: 我们需要Maxheap大小的原因是我们无法选择在标准选项上运行应用程序。
答案 0 :(得分:2)
这两个命令选项
-ms500M -mx1800M
应该是
-Xms500M -Xmx1800M
答案 1 :(得分:0)
您使用的是32位版本的JDK吗?
32位JDK具有最大堆大小限制(就像32位操作系统不能使用超过4GB的RAM)。
使用64位版本的JDK(假设您有64位操作系统)。
编辑:
由于您现在已经提到过您使用的是32位操作系统,因此我有一些坏消息。
除非转移到64位系统,否则无法增加堆大小。
点击此处了解详情:https://stackoverflow.com/a/7019624/1862828
唯一的解决方案是重构您的程序,以便它使用更少的内存并使用较小的值来为{mmx -Xmx1000M
。
答案 2 :(得分:0)
这只适用于64位版本的java。
转到control panel> java icon
。打开java控制面板的小窗口。
点击java menu bar >view button
。
如果您有两个java平台,请禁用以前版本的java,然后单击Runtime parameters文本字段。
在此处记下-Xmx1024m
或小于RAM SIZE。不要将堆大小增加到等于RAM,否则系统将崩溃。