Как отладить нативный сбой Java в Linux? - PullRequest
15 голосов
/ 23 декабря 2010

Я видел этот вопрос и эту статью о том, как отладить нативный сбой Java.Статья относится к Windows.Каковы эквивалентные средства отладки в Linux?

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

Обновление : Я почти уверен, что сбой произошел из-за кода JNI, который у нас есть.Я никогда не имел в виду, что неисправна была сама JVM.

В каждом запросе содержится аварийный дамп (или столько, сколько уместится в предельном потоке стека в 30 КБ):*

Ответы [ 3 ]

4 голосов
/ 23 декабря 2010

Если ваша библиотека JNI не повредила случайную область памяти (которую крайне сложно отладить), наиболее вероятной причиной сбоя в libjvm является ошибка в JVM.Учитывая, что текущим выпуском является Java 6 update 23, и у вас есть Java 6 update 3, обновление - это первое, что я бы попробовал.

Кстати: у вас также есть 64-битная ОС, вы можете попробовать 64-битную Java.

BTW2: вы можете написать -Xmx2000000k как -mx2g.Максимальное значение по умолчанию на компьютере с 8 ГБ должно быть около 2 ГБ.

2 голосов
/ 24 декабря 2010

Я ожидал вызова JNI в аварийном дампе, но это, похоже, не причина, а ошибка в библиотеке pthreads.

Я не могу вспомнить, если библиотека pthreads должна быть предоставлена ​​базовой платформой или она встроена в JRE, но я бы посоветовал вам убедиться, что вы работаете на одной из официально поддерживаемых платформ Linux, а если нет, то настоятельно рекомендуем переключиться.

1 голос
/ 24 декабря 2010

Вам действительно нужен -Xmx2000000k?Похоже, вы используете только около 84 МБ.

Мой опыт показывает, что вы действительно не можете с уверенностью превышать 1700 МБ кучи в 32-разрядном пространстве процесса.Таким образом, эта настройка может быть причиной этой проблемы.

...