gpt4 book ai didi

java - 为什么 pyjnius 设置了错误的 JVM 选项?

转载 作者:行者123 更新时间:2023-12-01 11:19:34 25 4
gpt4 key购买 nike

我正在通过 Python 的 pyjnius 包 1.2.0 版运行一些 Java 代码。有几个 Python 进程,每个进程都使用不同的输入调用同一个 Java 类,因此每个进程都会初始化自己的 JVM。我遇到的问题是内存问题,但在研究这个问题时,我发现正在运行的 JVM 中的选项与我在 Python 代码中设置的选项不同。

我正在设置选项:

jnius_config.add_options('-Xms512m', '-Xmx1280m')

Java 代码运行后,我从命令行运行 jps 并得到以下输出:
C:\>jps -lvm
25140 -Xmx1280m -Xmx1280m
24684 -Xmx1280m -Xmx1280m

我尝试了不同的论点 add_options ,并且 jps 总是为每个 JVM 报告第二个参数的两个副本。我也尝试使用 set_options并得到相同的结果。

我使用 jnius_config.get_options() 检查了选项是在 pyjnius 模块本身中设置的。添加选项之前和之后。
print("Initial options:", jnius_config.get_options())
jnius_config.add_options('-Xms512m', '-Xmx1280m')
print("Configured options:", jnius_config.get_options())

它报告的值与我设置的值相同。

Initial options: []
Configured options: ['-Xms512m', '-Xmx1280m']

但是当我在 jps 中检查 JVM 时,它们似乎仍然使用错误的选项集运行。其他正在运行的 JVM 报告了不同的选项,所以我认为这在 jps 中不是问题,因为只有通过 pyjnius 运行的进程才会给我返回错误的值。

有谁知道这是否是 pyjnius 中的错误?是否有另一种方法来检查启动 JVM 的选项?

我不确定是否应该信任 jps 或 pyjnius 报告的值,但我在运行 Python 脚本时创建的错误日志中看到以下行:

VM Arguments:
jvm_args: -Xmx1280m -Xmx1280m
java_command: <unknown>

pyjnius 设置了错误的选项,这看起来很有定论。

我对初始内存大小选项做了一些实验,发现只有当初始内存大小为 -Xms100m时才会出现这个问题。或更大。当我将初始值设置为 -Xms99m或更低,jps 报告我设置的相同值。

最佳答案

也许你应该尝试提供一个简单的minimal-reproducible-example可用于重现行为。

快速检查后按预期工作。

使用的软件版本

$ python -V
Python 3.8.2
$ java -version
java version "1.8.0_202"
  • 创建一个新的 Python venv并执行pip install pyjnius==1.2.0
  • 检查已安装的软件包版本
    $ pip freeze
    Cython==0.29.17
    pyjnius==1.2.0
    six==1.14.0
  • 创建一个最小的例子minimal.py
    import jnius_config

    print("Initial options:", jnius_config.get_options())
    jnius_config.add_options('-Xms128m', '-Xmx256m')
    print("Configured options:", jnius_config.get_options())

    from jnius import autoclass
    Thread = autoclass('java.lang.Thread')
    Thread.sleep(60_000)

    System = autoclass('java.lang.System')
    System.out.println('Hello World')
  • 启动示例两次
    session 1 $ python minimal.py 
    Initial options: []
    Configured options: ['-Xms128m', '-Xmx256m']

    session 2 $ python minimal.py
    Initial options: []
    Configured options: ['-Xms128m', '-Xmx256m']
  • 检查正在运行的 Java 进程
    $ jps -v
    191594 -Xms128m -Xmx256m
    191615 -Xms128m -Xmx256m
  • 关于java - 为什么 pyjnius 设置了错误的 JVM 选项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61333277/

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