4

Я работаю над большим java-приложением. Он довольно параллелен и использует несколько fixedThreadPools (каждый с 8 потоками). Я запускаю его на компьютере с 2 ядрами, каждый с 4 процессорами. Моя программа анализирует большие наборы данных, и анализ сохраняется (сериализован) после каждого набора, хотя он работает с наборами данных и поэтому перезагружается каждый раз, когда я запускаю новый (а затем сохранен). Моя проблема заключается в следующем: после запуска 4-5 наборов данных (занимает около 2 дней, и я очень доволен своей эффективностью кодирования), он сработает после того же точно такого же количества времени на 5-м множестве (независимо от того, какие данные набор, который я использую). Программа повторяется, и поэтому в этом коде нет ничего нового. Это воспроизводимо, и я не уверен, что делать. Я могу опубликовать полный журнал ошибок, если это поможет ... Я понимаю, что эта проблема неоднозначна без более подробной информации, но если есть какие-либо предложения, мы будем очень благодарны.Ошибка приложения Java

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

-Xmx6g -Xmx12g -XX: + UnlockExperimentalVMOptions -XX: + UseG1GC

Спасибо, Джо

# 
# A fatal error has been detected by the Java Runtime Environment: 
# 
# SIGSEGV (0xb) at pc=0x0000000000000000, pid=18454, tid=140120548144896 
# 
# JRE version: 7.0_03-b147 
# Java VM: OpenJDK 64-Bit Server VM (22.0-b10 mixed mode linux-amd64 compressed oops) 
# Derivative: IcedTea7 2.1.1pre 
# Distribution: Ubuntu precise (development branch), package 7~u3-2.1.1~pre1-1ubuntu2 
# Problematic frame: 
# C 0x0000000000000000 
# 
# Failed to write core dump. Core dumps have been disabled. To enable core dumping, try "ulimit -c unlimited" before starting Java again 
# 
# If you would like to submit a bug report, please include 
# instructions on how to reproduce the bug and visit: 
# https://bugs.launchpad.net/ubuntu/+source/openjdk-7/ 
# 
+2

Возможно, -XX: + UnlockExperimentalVMOptions -XX: + UseG1GC - это не такая хорошая игра? – bmargulies

+0

Я хотел бы рассмотреть возможность обновления вашей версии Java, если это возможно. Вы также можете подумать о том, чтобы представить ошибку в Sun/Oracle с вашим кодом, если она действительно повторяема. – Gray

+0

У меня были сбои JVM с использованием сборщика G1 –

ответ

1

Я бы измерил его чем-то вроде Visual VM. Он покажет, что происходит в памяти, потоках, процессоре, созданных объектах и ​​т. Д. В режиме реального времени по мере запуска вашего приложения.

Хорошая версия, что у меня есть только для Oracle/Sun JVM. Есть тот, который поставляется с JDK, но я не думаю, что он показывает столько же деталей, сколько и версия 1.6.3 со всеми установленными плагинами.

+0

Спасибо, это выглядит очень полезно. – JoeC

3

Просто трудно догадаться ...

Может быть, это не в состоянии для получения дополнительных файлов

Если вы работаете в этом режиме, попробуйте запустить

ulimit -c unlimited 

Перед тем, как запустить Java программу ... Это должно помочь в двух направлениях

  1. Это должно увеличить предел создания файла
  2. Если какая-либо ошибка будет создавать дамп.

Посмотрите, сколько файлов IO оно использует во время работы программы.

+0

Спасибо, я попробую это. – JoeC

0

Просто добавьте -Dorg.eclipse.swt.browser.DefaultType = mozilla в файл eclipse.ini.