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

Я использую приложение 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 Ответ

1 голос
/ 28 апреля 2010

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

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

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

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

попробовать:

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

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

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

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

.
...