-XX:-PrintCompilation日志记录方法

Rom*_*nus 5 java jvm

当JVM记录我的程序类的编译/反编译时,它是在开始编译/反编译之前还是在完成编译/反编译之后记录的?

我用它-XX:+PrintCompilation来要求JVM记录.

谢谢,

罗曼

apa*_*gin 5

根据 HotSpot 来源PrintCompilation,在开始编译方法之前打印一行(参见CompileBroker::invoke_compiler_on_method)。

要在编译完成后发出额外的编译器信息,请使用

-XX:+UnlockDiagnosticVMOptions -XX:+PrintCompilation2
Run Code Online (Sandbox Code Playgroud)

和/或

-XX:+UnlockDiagnosticVMOptions -XX:+TraceNMethodInstalls
Run Code Online (Sandbox Code Playgroud)


Bap*_*cht 2

根据这项研究,这是该主题为数不多的参考文献之一:

尺寸

这是该方法的原始字节码的大小。它不是生成的本机代码的大小。当 PrintCompilation 打印出日志时,CompileTask 甚至还没有执行;它不可能提前知道生成的代码的大小。

它是在编译之前打印的。这就是为什么尺寸是原始尺寸,而不是优化后的尺寸。