我有一个.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)。谢谢。
答案 0 :(得分:0)
查看2GB的示例:
java -Xmx2g -jar <your-file>.jar
希望有所帮助