Как генерируются трассировки стека?
Ни один метод в программе не «знает», где он находится в стеке. Все, что он знает, это его собственная маленькая работа, и он делает это и возвращается. Итак, когда возникает исключение и выводится трассировка стека, откуда это берется?
Существует ли неявно отдельный поток, работающий рядом с каждым приложением в JVM, которое отслеживает состояние программы? Или сама JVM хранит эту информацию, и исключения как-то извлекают эти данные из нее, когда они выбрасываются?
Если это так, то можно ли использовать какой-либо вызов для извлечения трассировки стека (либо из потока монитора, либо из JVM)?без исключение?