通过命令行启动jar时分配的内存,但如果双击则不会

时间:2015-01-07 09:58:48

标签: java windows command-line jar jvm-arguments

我有一个.jar文件,它代表一个包装器来启动另一个带有JVM参数的.jar文件,因为显然没有其他方法可以做到这一点。这个包装器根据系统架构构建命令行参数java -jar <arg1> <arg2> ... MyJarFile.jar:调用64位JVM(-d64)与否,并通过-Xmx1280M设置堆大小(最大值为32位)系统,从我的理解)或要求4 GB,如果它是64位架构。通过java -version检查Java版本向我显示我运行了64位JVM并检查环境变量中的PATH确认它。现在,如果我通过命令行启动包装器,一切正常。使用分配的4GB内存启动实际的.jar文件。如果我从Windows资源管理器中双击包装器,则会以最小(例如,247 MB​​)的内存启动实际的.jar文件。 注意我还在命令参数中设置了-Xms512MB,如果从Windows UI启动包装器,显然会被忽略。确实,在我遇到问题的机器上,安装了32位和64位版本的Java。检查本地机器/ jarFile条目下的Windows注册表(regedit),我看到它链接到32位版本的运行时环境。如果我在那里更改它,它可以工作,但只要安装了Java更新,就会恢复注册表设置。任何想法为什么会这样? (我还没有在UNIX系统上进行测试,因为该应用程序主要用于Windows)。谢谢。

1 个答案:

答案 0 :(得分:0)

查看2GB的示例:

java -Xmx2g -jar <your-file>.jar

希望有所帮助