|
|
|
дамп ThreadStack при ошибке StackOverflowError
|
|||
|---|---|---|---|
|
#18+
Добрый день, уважаемые форумчане. Скажите пожалуйста, есть ли возможность при возникновении указанного исключения получить дамп ThreadStack. То есть такой же текст, который отображается командой Код: plaintext Подопытный кролик - Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. Запускаю так - Код: plaintext Заранее спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2016, 16:49 |
|
||
|
дамп ThreadStack при ошибке StackOverflowError
|
|||
|---|---|---|---|
|
#18+
Мурзик, Что именно не получается? Какое отношение код имеет к вопросу? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2016, 16:55 |
|
||
|
дамп ThreadStack при ошибке StackOverflowError
|
|||
|---|---|---|---|
|
#18+
Мурзик, для своего потока ты получаешь стек вызовов в объекте Exception. Зачем тебе видеть стеки других потоков? Возможно какой-то performance-tuning? Так для перформанса есть готовые инструменты. Или ты пишешь свой? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2016, 17:42 |
|
||
|
дамп ThreadStack при ошибке StackOverflowError
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, добрый день. Выполняю указанный код. JVM валится - не хватает памяти ThreadStack. Мне надо "извне" получить дамп ThreadStack в момент "падения JVM". То есть не меняя исходный код. Буду очень признателен за совет. Заранее спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2016, 15:27 |
|
||
|
дамп ThreadStack при ошибке StackOverflowError
|
|||
|---|---|---|---|
|
#18+
МурзикJVM валится - не хватает памяти ThreadStack. Дык это не StackOverflowError, а OutOfMemoryError. МурзикМне надо "извне" получить дамп ThreadStack в момент "падения JVM". Надо что-то с такими корявыми формулировками решать. Если то что выдаёт jstack, то это обычный thread dump - stack trace для всех потоков. Полноценный же дамп всего стэка, это нечто другое. МурзикТо есть не меняя исходный код. О, как. Как на счет -XX:OnOutOfMemoryError="jstack %p" Или у вас именно StackOverflowError? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2016, 15:50 |
|
||
|
дамп ThreadStack при ошибке StackOverflowError
|
|||
|---|---|---|---|
|
#18+
BlazkowiczМурзикJVM валится - не хватает памяти ThreadStack. Дык это не StackOverflowError, а OutOfMemoryError. МурзикМне надо "извне" получить дамп ThreadStack в момент "падения JVM". Надо что-то с такими корявыми формулировками решать. Если то что выдаёт jstack, то это обычный thread dump - stack trace для всех потоков. Полноценный же дамп всего стэка, это нечто другое. МурзикТо есть не меняя исходный код. О, как. Как на счет -XX:OnOutOfMemoryError="jstack %p" Или у вас именно StackOverflowError? У меня именно именно StackOverflowError - Exception in thread "main" java.lang.StackOverflowError Фрагмент вывода:авторD:\>java -Xss109k OutThreadStackNew wait Exception in thread "main" java.lang.StackOverflowError at java.nio.Buffer.<init>(Buffer.java:197) at java.nio.CharBuffer.<init>(CharBuffer.java:281) at java.nio.HeapCharBuffer.<init>(HeapCharBuffer.java:70) at java.nio.CharBuffer.wrap(CharBuffer.java:373) at sun.nio.cs.StreamEncoder.implWrite(StreamEncoder.java:265) at sun.nio.cs.StreamEncoder.write(StreamEncoder.java:125) at java.io.OutputStreamWriter.write(OutputStreamWriter.java:207) at java.io.BufferedWriter.flushBuffer(BufferedWriter.java:129) at java.io.PrintStream.write(PrintStream.java:526) at java.io.PrintStream.print(PrintStream.java:669) at java.io.PrintStream.println(PrintStream.java:806) at OutThreadStackNew.methodOne(OutThreadStackNew.java:22) at OutThreadStackNew.methodOne(OutThreadStackNew.java:28) at OutThreadStackNew.methodOne(OutThreadStackNew.java:28) at OutThreadStackNew.methodOne(OutThreadStackNew.java:28) at OutThreadStackNew.methodOne(OutThreadStackNew.java:28) at OutThreadStackNew.methodOne(OutThreadStackNew.java:28) at OutThreadStackNew.methodOne(OutThreadStackNew.java:28) at OutThreadStackNew.methodOne(OutThreadStackNew.java:28) at OutThreadStackNew.methodOne(OutThreadStackNew.java:28) java -Xss109k -XX:OnOutOfMemoryError="jstack %p" OutThreadStackNew пробовал - ничего не показывает. Пробовал и так - java -Xss109k -XX:OnOutOfMemoryError="jstack %%p" OutThreadStackNew С тем же неУспехом. Заранее спасибо за ответ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2016, 10:43 |
|
||
|
дамп ThreadStack при ошибке StackOverflowError
|
|||
|---|---|---|---|
|
#18+
mayton, добрый день. Мне нужен какой-нибудь инструмент, который бы мог в момент "падения JVM по причине Exception in thread "main" java.lang.StackOverflowError" получить что-нибудь похожее на вывод утилиты jstack. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2016, 10:46 |
|
||
|
дамп ThreadStack при ошибке StackOverflowError
|
|||
|---|---|---|---|
|
#18+
Мурзик, Не вижу я никаких штатных способов повесить хук на stackoverflowerror без того чтобы расковырять внутренности OpenJDK. Зачем это вообще нужно - не понятно. Размер других потоков на стэк того потока который упал никак не влияет. Банальный catch(Throwable e) поможет вывести стэк упавшего потока. Для чего нужны все остальные? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2016, 10:46 |
|
||
|
дамп ThreadStack при ошибке StackOverflowError
|
|||
|---|---|---|---|
|
#18+
Мурзик, Можно попробовать через Java Debug поставить breakpoint на выброс этого исключения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2016, 10:47 |
|
||
|
дамп ThreadStack при ошибке StackOverflowError
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, я не могу менять существующий код. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2016, 10:59 |
|
||
|
дамп ThreadStack при ошибке StackOverflowError
|
|||
|---|---|---|---|
|
#18+
BlazkowiczМурзик, Можно попробовать через Java Debug поставить breakpoint на выброс этого исключения. Сделал так - 1. Запустил отдалчик: jdb -Xss109k OutThreadStackNew 2. В отладчике выполнил команду >run 3. Дождался сообщения об исключении 4. Командой where all посмотрел, что делается в различных Thread 5. Не выходя из отладчика, в другой консоли выполнил jps для получения PID нужного процесса 6. В другой консоли выполнил jstack -l -F PID и получил некое подобие дампа Thread Stack. Вот еще бы узнать, как можно получить значение "занятой" памяти в разделе ThreadStack (т.е. сколько из 109k занято).... Заранее спасибо за совет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2016, 15:50 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=39238869&tid=2124043]: |
0ms |
get settings: |
6ms |
get forum list: |
16ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
60ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
42ms |
get tp. blocked users: |
1ms |
| others: | 218ms |
| total: | 357ms |

| 0 / 0 |
