1

我正在使用来自 python 的 os.system 调用来运行 jar 文件。jar 文件需要较大的堆空间,因此我使用 Xmx 分配 4 Gb 堆空间。当我从命令行执行命令“java -Xms4096m -Xmx4096m -jar camXnet.jar net.txt”时,它可以正确执行,但是当我通过 os.system 从 python 程序调用它时,它仅在分配的内存小于时才有效4Gb,否则无法执行。有什么解决办法吗?

执行失败是指出现一个命令窗口,指示 os.system 已被调用,然后它消失,我将检查错误代码是否返回。但是,如果将 xx,xms 设置为较低的值,则不会遇到任何问题。

好的,我检查了两个版本,并且有区别通过python调用的是Java HotSpot Client VM混合模式,共享而通过普通命令行调用的是Java HotSpot 64位服务器

如何让 python 中的 os.system 调用正确的 64 位服务器。

更新:我尝试使用 subprocess 模块,但 java 返回的版本与 os.system 的版本相同

4

3 回答 3

2

如果不知道更多细节很难确定——比如你使用的是哪个操作系统——但我猜你使用的是 32 位版本的 Python,这意味着当你启动 Java 时,你也会得到 32-位版本,堆大小限制为 4GB。

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

于 2010-01-04T16:05:01.673 回答
1

我在从 32 位 python 启动 64 位 Java 时遇到了同样的问题。我使用 Dave Webb 的将 64 位 Java.exe 的完整路径放在 python 脚本中的建议解决了这个问题。这工作得很好,所以没有必要使用 64 位 Python

于 2010-01-23T04:43:41.797 回答
0

只是一个建议,但请尝试使用subprocess.call( )而不是 os.system(),它是首选并且可以处理您遇到的问题。我很想知道有没有...

于 2010-01-04T16:21:39.783 回答