Я использую код Java в пакете Python pyjnius, версия 1.2.0. Существует несколько процессов Python, каждый из которых вызывает один и тот же класс Java с разными входами, поэтому каждый из них инициализирует свою собственную JVM. У меня проблема с памятью, но, изучая ее, я обнаружил, что параметры работающих JVM не совпадают с параметрами, установленными в моем коде Python.
I Я устанавливаю параметры с помощью:
jnius_config.add_options('-Xms512m', '-Xmx1280m')
После запуска кода Java я запускаю jps из командной строки и получаю следующий вывод:
C:\>jps -lvm
25140 -Xmx1280m -Xmx1280m
24684 -Xmx1280m -Xmx1280m
Я пробовал разные аргументы add_options
, а jps всегда сообщает о двух копиях второго аргумента для каждой из JVM. Я также попытался использовать set_options
и получил те же результаты.
Я проверил, что параметры установлены в самом модуле pyjnius, используя jnius_config.get_options()
до и после добавления параметров.
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']
Но JVM по-прежнему работают с неверными настройками, когда я проверяю их в jps. Другие работающие JVM сообщают о других параметрах, поэтому я не думаю, что это проблема в jps, поскольку только процессы, выполняемые через pyjnius, возвращают мне неправильные значения.
Кто-нибудь знает, если это ошибка в pyjnius? Есть ли другой способ проверить параметры, с которыми была запущена JVM?
Я не был уверен, стоит ли доверять значениям, указанным jps или pyjnius, но я вижу следующие строки в журнале ошибок создан при запуске моего Python сценария:
VM Arguments:
jvm_args: -Xmx1280m -Xmx1280m
java_command: <unknown>
Кажется довольно убедительным, что pyjnius устанавливает неправильные параметры.
Я немного поэкспериментировал с исходным параметром размера памяти и обнаружил, что эта проблема существует только тогда, когда начальный объем памяти -Xms100m
или больше. Когда я устанавливаю начальное значение на -Xms99m
или ниже, jps сообщает о тех же значениях, которые я установил.