Before we dive into StackWalker, let's start by covering the Java Stack. We will review basic stack information, not specific to StackWalker.
The Java runtime has a class named Stack, which can be used to store objects using the last-in-first-out (LIFO) policy. Arithmetic expressions are calculated using a stack. If we add A and B in our code, first A is pushed on the operand stack, then B is pushed on the operand stack and, finally, the addition operation is executed, which fetches the two topmost elements of the operand stack and pushes the result, A + B there.
The JVM is written in C and executes calling C functions and returning from there. This call-return sequence is maintained using the Native Method Stack, just like any other C program.
Finally, when the JVM creates a new thread, it also allocates a call stack containing frames that in turn...