без ответа приложение Java без причины - PullRequest
0 голосов
/ 17 ноября 2009

У меня есть Java-приложение, которое я запускаю из Eclipse 3.5. Моя ОС - WinXP (SP2), а версия JRE - 6.05.

Я запускаю приложение на двух одинаковых компьютерах (или мне так кажется), но приложение ведет себя по-разному на каждом компьютере.

Компьютеры одной модели Dell Optiplex с одинаковым объемом памяти и одинаковым графическим процессором.

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

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

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

Мне бы хотелось получить несколько идей о том, где может быть проблема.

Спасибо, Йоав.

Ответы [ 5 ]

3 голосов
/ 17 ноября 2009

Я нашел проблему.

Приложение, которое не отвечало, было запущено в режиме отладки.

Извините, что потратил ваше время впустую ...

1 голос
/ 17 ноября 2009

Может помочь вам получить Thread Dump , когда приложение зависнет. Надеемся, что это точно скажет вам, что вас удерживает (то есть где-то ждет IO).

0 голосов
/ 17 ноября 2009

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

  • У них обоих установлены Eclipse 3.5, WinXP (SP2) и JRE 6.05?
  • И ведут себя по-разному при запуске из Eclipse (на обеих машинах или на одном запуске из командной строки)?
  • Это воспроизводимое? Если да, то когда это произойдет? На старте? Или на какое-то конкретное действие?
  • Имеет ли программа графический интерфейс?
  • Возможно, на одном из компьютеров установлено какое-либо антивирусное программное обеспечение или другое подобное программное обеспечение, которое может задержать выполнение программы
  • Включены ли сеть, доступ к файлам, многопоточность?
0 голосов
/ 17 ноября 2009

Я могу представить себе две возможности, не связанные с применением:

  1. Пейджинг памяти. На медленной машине происходит что-то дополнительное, поэтому ваша JVM не получает достаточную долю процессорного времени. Большой процесс-демон или что-то подобное.

  2. Доступ к сети. Ваше приложение выполняет какой-то сетевой вызов, и оно зависает или истекает. Возможно, собирается и извлекает какую-то XML-схему, возможно, диск подключается к подключенному диску.

Я видел все странности, когда приложения пытаются получить доступ к хостам по имени и DNS не очень хорошо. У одной машины есть запись в etc / host, а у другой - нет. Даже каждая машина может захотеть разрешить себя сама.

0 голосов
/ 17 ноября 2009

Ну, я бы сначала обновил вашу версию JRE, так как сейчас есть более новые версии.

Что касается того, что оба компьютера идентичны, действительно ли они идентичны? Мне трудно поверить, что оба имеют одинаковое программное обеспечение и настройку точно так же и что все, что вы делали с одним, вы всегда делали с другим. Если это действительно так, вы можете попробовать отладить приложение на второй машине (которая зависает) и выяснить, где именно оно висит.

Это также может помочь нам, если вы дадите больше информации о вашем заявлении. Возможно, проблема не в вашем компьютере, если приложение выполняет такие функции, как доступ в Интернет, доступ к сети и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...