Дампы Потока JVM, содержащие мониторы, не блокируя потоки

Исключение нулевого указателя генерируется, когда приложение пытается использовать null в случае, когда требуется объект. К ним относятся:

  1. Вызов метода экземпляра объекта null.
  2. Доступ или изменение поля объекта null.
  3. Принимая длину null, как если бы это был массив.
  4. Доступ или изменение слотов null, как если бы это был массив.
  5. Бросок null как будто это было значение Throwable.

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

Ссылка: http://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html

8
задан Kevin 15 September 2008 в 17:36
поделиться

4 ответа

Те потоки ожидания ожидают навсегда, или они в конечном счете продолжаются?

Если последний, может случиться так, что блокировка сохранена сборщиком "мусора".

Можно добавить аргументы -verbose:gc with -XX:+PrintGCDetails на Вашей командной строке Java, которая будет сказана, когда GCs происходят. Если действие gc совпадает с Вашим замедлением, оно может указать, что это - проблема.

Вот некоторая информация о сборке "мусора".

1
ответ дан 6 December 2019 в 01:41
поделиться

Ваш код каким-либо изменением используют какой-либо JNI? (т.е. Вы выполняете какой-либо собственный код, запущенный от Java?).

Мы видели подобное поведение, но JDK 1.6.0_05. Приложение, кажется, заходит в тупик, но выставочные потоки Jstack, ожидающие блокировки, на которую не содержат никакие другие потоки. У нас есть некоторый код JNI, таким образом, возможно, что мы повреждаем что-то.

Мы не нашли решение для этого, и проблема только восстанавливаема на 1 машине.

1
ответ дан 6 December 2019 в 01:41
поделиться

Да обычно каждый монитор, который заблокирован, должен сделать, чтобы владелец Распараллелил. Возможно, Ваш дамп стека не был завершен (слишком длинный), или возможно дамп не был последователен. Я мог предположить, что это не останавливает мир, таким образом, заблокированный монитор выводится, но поток, кто владеет блокировкой, выпускает его прежде чем быть выведенным (это - просто предположение).

Можете Вы некоторые, где загрузка, которую дамп как текстовый файл для более легкого поиска, и говорит нам, на какой монитор Вы смотрите.

0
ответ дан 6 December 2019 в 01:41
поделиться

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

0
ответ дан 6 December 2019 в 01:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: