当我尝试从我的Python程序中执行Java jar文件时,如下所示:
pathToMyJar = ...
argumentsToMyJar = ...
myJavaCommandLine = 'java -Xms4g -Xmx16g -jar ' + pathToMyJar + ' ' + argumentsToMyJar
print(myJavaCommandLine)
os.system(myJavaCommandLine)
我收到以下错误:
Invalid maximum heap size: -Xmx16g
The specified size exceeds the maximum representable size.
但是当我从PowerShell运行相同的程序时(基本上是Python程序打印的命令行的复制和粘贴),以下运行正常。
PS D:\Temp> java -Xms4g -Xmx16g -jar <pathToMyJar> <argumentsToMyJar>
我错过了什么?
我徒劳地尝试了以下方法:
这是Java版本:
PS D:\Temp> java -version
java version "1.7.0_71"
Java(TM) SE Runtime Environment (build 1.7.0_71-b14)
Java HotSpot(TM) 64-Bit Server VM (build 24.71-b01, mixed mode)
答案 0 :(得分:1)
唯一合理的解释是您在64位计算机上安装了32位版本的Java。显然,32位版本的Java最多可以处理2个 32 字节(或4 GB)。卸载32位版本,然后安装64位版本(假设您在Windows上重启)。
答案 1 :(得分:1)
消息:
指定的大小超出了最大可表示大小。
指向堆大小,该大小对于用于运行Java可执行文件的指令集体系结构而言太大;即你使用的是32位JVM。
我怀疑&#34;确保在命令行和Python程序&#34; 上运行相同的Java版本的方法是不正确的。您需要确保在两个情况下运行64位JVM。重要的不仅仅是版本号。
(来自命令提示符的java
允许大堆的事实意味着您的计算机上同时安装了32位和64位JRE或JDK。)
另一种可能性是你的python应用程序在每个进程的内存使用情况下运行ulimit ...但是我预计会有不同的错误消息。