我使用的使用从蟒蛇使用os.system调用运行jar文件。 JAR文件中需要大量的堆空间,因此我正在使用分配XMX的4 Gb堆空间。 当我执行该命令 “Java的-Xms4096m -Xmx4096m -jar camXnet.jar net.txt” 从命令行它执行正确的,但是当我通过使用os.system从Python程序调用它,它只能如果分配的内存小于4GB,否则就无法执行。 任何解决方案?

通过失败时执行我的意思是一个命令窗口出现,指示使用os.system已经被调用并且然后消失,我将检查错误代码,如果被返回的任何。然而,没有问题,如果遇到XMX,XMS被设定为较低的值。

确定我检查两个版本并且是有差别的一个经由蟒称为是爪哇HotSpot客户VM混合模式下,共享,同时一个经由正常的命令行调用就是Java HotSpot的64位服务器

如何让使用os.system在python调用正确的一个是64位服务器。

更新:我尝试使用子模块的java的回报尚未版本是相同从使用os.system

有帮助吗?

解决方案

这很难不知道更多的细节可以肯定的 - 就像它的操作系统你 - 但我的猜测是,你正在使用Python的32位版本,这意味着,当你启动Java,你也越来越的32位版本,其具有4GB的堆大小限制。

要从命令行运行,并从你的Python脚本运行时,当测试是否是这种情况,比较java -version的输出。

其他提示

我有同样的问题,从32位蟒启动64位的Java。我解决使用把完整路径到64位JAVA.EXE在python脚本的戴夫·韦伯的suggestiong问题。这个工作得很好,所以它不是必须使用64位的Python

只是一个建议,但尽量使用 subprocess.call()代替使用os.system(),的优选和可以处理您遇到的问题。我很好奇,想知道如果这样做...

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top