Установить максимальный объем памяти виртуальной машины Java-приложения без доступа к параметрам виртуальной машины из-за пользовательского модуля запуска?

Я использую приложение Java, которое позволяет вам импортировать пользовательские файлы. При импорте эти файлы загружаются в память.

Проблема в том, что файлы, которые я хочу импортировать, очень большие, это вызывает исключение OutOfMemory. Журнал аварий также сообщает мне, что виртуальная машина была запущена с параметром java "-Xmx512m", я хочу изменить это значение на "-Xmx1024m", чтобы я удвоил доступную память.

Проблема в том, что это приложение использует свою собственную папку JRE и что на C написан модуль запуска, который вызывает файл jvm.dll. В любом случае, java.exe или javaw.exe никогда не вызываются, и поэтому я не могу сам установить эти параметры (если я удаляю эти исполняемые файлы, это не имеет значения, все равно можно запустить приложение - это не так с dll).

Итак, мой вопрос, могу ли я установить этот параметр VM другим способом? Я даже готов изменить файлы JRE, если нет другого пути.

Обновление: нашел дополнительную информацию:

jvm_args: -Djava.system.class.loader = com.company.loader.NativeClassLoader -Xmx160m -Xms160m -Xincgc

java_command: неизвестно

Тип запуска: универсальный

1 ответ

Решение

Вам, вероятно, будет лучше, если вы попытаетесь уничтожить пусковую установку, используя стандартную JVM. Посмотрите, сможете ли вы выяснить, с какими параметрами запускается Java - это может помочь сбросить модуль запуска и любые связанные файлы конфигурации.

Тогда просто позвони в java.

Это может не работать вообще, в зависимости от того, что еще делает программа запуска.

редактировать:

пытаться:

java -Djava.system.class.loader=com.company.loader.NativeClassLoader -Xmx160m -Xms160m -Xincgc

из командной строки против реальной JVM. Есть большая вероятность, что он потерпит неудачу из-за NativeClassLoader или других вещей, настроенных загрузчиком java.

Также вы можете пропустить реальный класс Java, который он пытается запустить (я не знаю, нужен ли этот "NativeClassLoader" фактический основной класс или нет).

Не зная больше о загрузчике класса C, я не знаю, сможет ли кто-нибудь вам сильно помочь. Возможно, вы могли бы связаться с продавцом? Вы можете выгрузить файл.exe и посмотреть, есть ли какой-нибудь текст, идентифицирующий его. Если бы вы могли выяснить, откуда он взялся, вы можете найти в нем документы, рассказывающие о том, как перенаправлять параметры в JVM.

Другие вопросы по тегам