While going through a crash dump, I encountered following line
j java.awt.EventDispatchThread.pumpEventsForFilter(ILjava/awt/Conditional;Ljava/awt/EventFilter;)V+35
I have few quesions which I eagerly want to understand.
What does IL and L stand for in the string ILjava/awt/Conditional;Ljava/awt/EventFilter;
What is V+35 at the end of the string?
Those are type strings in a method signature.
(ILjava/awt/Conditional;Ljava/awt/EventFilter;)V
The I
means int
The Ljava/awt/Conditional;
means java.awt.Conditional
The Ljava/awt/EventFilter;
means java.awt.EventFilter
The V
means void
.
So the method on the callstack is
void pumpEventsForFilter(int, Conditional, EventFilter)
This internal type string syntax is documented in the javadoc for Class.getName()
and also in the JVM specification. (The same syntax appears in the strings generated by Object.toString
... assuming that it hasn't been overridden with something more human friendly.)
And the +35
is a bytecode offset; i.e. an indication of where the method execution had gotten to in this stackframe.