The last example from our previous post produced the following output
> java -XX:+PrintCompilation Main2 | Select-String -Pattern calculate
76 68 3 Main::calculate (9 bytes)
79 72 4 Main::calculate (9 bytes)
81 68 3 Main::calculate (9 bytes) made not entrant
>
Lets try to understand what this output means
Frist column is the no. of milliseconds elapsed since the start of the program. This indicates the time at which our method calculate() is JIT compiled
The second column here is the compilation id. Each compilation unit gets a unique id. 68 on 1st and 3rd lines in the above output indicates they refer to the same compilation unit.
The third column is blank in our output. Its a five character string, representing the characteristics of the code compiled
% - OSR compilation.
s - synchronized method.
! - Method has an exception handler.
b - Blocking mode.
n - Wrapper to a native method.
Fourth column is a number from 0 to 4 indicating the tier at which the compilation is done. If tiered compilation is turned off, this column will be blank.
Fifth column is the fully qualified method name
Sixth column is the size in bytes - size of the byte code that is getting compiled
Last column contains the message of the deoptimization done - made not entrant in our sample output
No comments:
Post a Comment