Java -XX:-打印编译日志记录方法
当JVM记录我的程序类的编译/反编译时,它是在开始编译/反编译之前还是在完成编译/反编译之后记录 我使用Java -XX:-打印编译日志记录方法,java,jvm,Java,Jvm,当JVM记录我的程序类的编译/反编译时,它是在开始编译/反编译之前还是在完成编译/反编译之后记录 我使用-XX:+printcomilation请求JVM登录 谢谢 罗曼 它是在开始编译/反编译之前记录日志,还是在完成编译/反编译之后记录日志 这些方法的编译是在后台进行的,这些消息的日志记录是异步的。i、 e.它可能被严重延迟。因此,当您看到日志时,并不表示您是何时编写的 生成的代码总是比字节码大得多。JVM“知道”用于许多度量的字节码的原始大小,即使在编译代码并重新编译代码之后也是如此。事实上
-XX:+printcomilation
请求JVM登录
谢谢
罗曼
它是在开始编译/反编译之前记录日志,还是在完成编译/反编译之后记录日志
这些方法的编译是在后台进行的,这些消息的日志记录是异步的。i、 e.它可能被严重延迟。因此,当您看到日志时,并不表示您是何时编写的
生成的代码总是比字节码大得多。JVM“知道”用于许多度量的字节码的原始大小,即使在编译代码并重新编译代码之后也是如此。事实上,它打印的是原始大小,并不表示消息何时触发
默认情况下,选项
-XX:-printcomployment
已关闭时将其关闭。HotSpot文档有点混乱,因为它显示了默认选项。这意味着您实际上想要-XX:+printcomployment
顺便说一句,这也意味着我看到使用的许多选项都是文档中记录的默认选项,即人们设置它们时没有意识到它们没有改变任何东西。根据,这是关于该主题的少数参考之一:
大小
这是该方法的原始字节码的大小。这不是问题
生成的本机代码的大小。编译器任务甚至没有执行
然而,当PrintCompilation打印出日志时;它不可能知道
预先生成的代码的大小
它是在汇编之前印刷的。这就是为什么尺寸是原始尺寸,而不是优化尺寸 根据热点来源
printcomilation
在开始编译方法之前打印一行(请参阅)
要在编译完成后发布其他编译器信息,请使用
-XX:+UnlockDiagnosticVMOptions -XX:+PrintCompilation2
和/或
-XX:+UnlockDiagnosticVMOptions -XX:+TraceNMethodInstalls
嗨,我的问题有一个错误。我的意思是“我使用-XX:+printcomilation”而不是“我使用-XX:-printcomilation”,我试图在代码中找到它(请参阅),但没有找到。我的猜测是,在编译过程中,它会在不同的地方打印信息(即在不同的地方打印几次)。完美的答案,我希望我能+200或更多