gpt4 book ai didi

java - 从 Python 程序中使用 -Xms 和 -Xmx 参数执行 jar 文件

转载 作者:行者123 更新时间:2023-11-30 03:36:36 24 4
gpt4 key购买 nike

当我尝试从 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>

我错过了什么?

我尝试了以下方法,但没有成功:

  • 用 subprocess.call() 替换 os.system() 调用,结果相同
  • 将 -Xmx16g 降低到较低的值(我的 64 位计算机上有 256G RAM)
  • 确保命令行和 Python 程序运行相同的 Java 版本。

这是 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)

最佳答案

消息:

The specified size exceeds the maximum representable size.

指向的堆大小对于用于运行 Java 可执行文件的指令集体系结构来说太大;即您使用的是 32 位 JVM。

我怀疑您的方法“确保在命令行和 Python 程序上运行相同的 Java 版本” 是不正确的。您需要确保在这两种情况下都运行 64 位 JVM。重要的不仅仅是版本号。

(命令提示符下的 java 允许使用大堆这一事实意味着您的计算机上同时安装了 32 位和 64 位 JRE 或 JDK。)

另一种可能性是您的 python 应用程序在每个进程的内存使用量上使用 ulimit 运行...但我预计会出现不同的错误消息。

关于java - 从 Python 程序中使用 -Xms 和 -Xmx 参数执行 jar 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27761188/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com