2010-03-31 2 views
0

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

Я разрабатываю небольшую программу Swing/JOGL и пытаюсь включить Java-среду выполнения в свою программу, чтобы упростить настройку JVM для моего пользователя. Моя программа запускается из пакетного файла, который вызывает мой пакет java.exe, который, в свою очередь, выполняет мои файлы jar.

Программа прекрасно работает в течение нескольких часов, после чего он выходит с "Microsoft Visual C++ Runtime Library" Ошибка:

Runtime Error! 
    Program: \<path>\java.exe 

    abnormal program termination 

Мои вопросы:

  1. ли включая JRE как папка в моей программе «правильное» решение моей проблемы, то есть обеспечение стабильной и последовательной JVM, из которой можно запустить мою программу? Было бы лучше просто заставить моего пользователя сначала установить Java?

  2. Просто включив папку bin в сборку jre для моей платформы, сталкиваюсь ли я с какой-либо проблемой конфигурации? Есть ли способ сохранить информацию о конфигурации, отличную от использования параметров командной строки при выполнении java.exe?

  3. В связи с сообщением об ошибке C++ и условиями, при которых происходят аномальные ошибки завершения процесса, я предполагаю, что это связано с моей библиотекой JOGL, однако программа работает полностью нормально вплоть до APT и при использовании одной и той же версии Java с помощью онлайн-установки программа полностью работает без ошибок.

  4. Это может быть что-то более основное? Возможно ли, что я просто не правильно собираю мусор или не настроен на конфигурацию GC, так как я просто использую папку bin для установки JRE?

ответ

4

Учитывая, что требуется полная ночная жизнь, наиболее вероятным виновником является либо утечка памяти, либо что-то, что гасит с видеодрайвером.

Проверьте, что видеодрайвер и DirectX обновлены. Автоматических обновлений Microsoft недостаточно! Вам нужно проверить сайт поставщика для видеодрайверов и Microsoft's site для DirectX.

Если это не исправить, это может быть утечка памяти.

Запустите заявку.
Запустите VisualVm. Он находится в каталоге jdb/bin под именем jvisualvm.exe.
Примечание: они должны быть запущены как же пользователь

Ваше приложение должно появиться под Local филиала по заявкам.
Щелкните правой кнопкой мыши и выберите Enable Heap Dump on OOME.
Щелкните правой кнопкой мыши и выберите Open.
Теперь рассмотрите вкладку «Монитор».

После того, как ваше приложение работает, куча и потоки должны стабилизироваться и отображаться в основном как прямая линия с периодическим пилообразным пилом, когда выполняются задачи и выполняется GC.

Однако, если любая из этих линий направлена ​​вверх, у вас есть проблема.

Есть также элементы управления для сбора кучи и отвалов резьбы, которые могут быть рассмотрены более подробно.

Смежные вопросы