Our coverage of StackWalker would not be complete without a look at performance considerations.
StackWalker is highly optimized and does not create huge memory structures that go unused. This is the reason why we have to use that function passed to the walker() method as an argument. This is also the reason why StackTrace is not automatically converted to StackTraceElement when created. This only happens if we query the method name, the line number of the specific StackTraceElement. It is important to understand that this conversion takes a significant amount of time, and if it was used for some debugging purpose in the code, it should not be left there.
To make StackWalker even faster, we can provide an estimate of the number of StackFrame elements that we will work within the stream. If we do not provide such an estimate, the current implementation in the JDK will...