Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jvm 如何知道在hotspot中编译类或方法花费了多少时间?_Jvm_Jit_Jvm Hotspot - Fatal编程技术网

Jvm 如何知道在hotspot中编译类或方法花费了多少时间?

Jvm 如何知道在hotspot中编译类或方法花费了多少时间?,jvm,jit,jvm-hotspot,Jvm,Jit,Jvm Hotspot,1,我想知道JIT期间在hotspot中编译类或方法花费了多少时间(我们遇到了一些超时问题,我们怀疑这可能是由于编译时间过长造成的)?这次是否有跟踪标志或其他跟踪方式 2,顺便说一句,如果该方法第一次运行,那么编译时间将是0,因为完全没有编译过程,对吗 JVM标志:-XX:+printcomilation-XX:+UnlockDiagnosticVMOptions-XX:+printcomilation2 289 425 4 java.time.LocalDat

1,我想知道JIT期间在hotspot中编译类或方法花费了多少时间(我们遇到了一些超时问题,我们怀疑这可能是由于编译时间过长造成的)?这次是否有跟踪标志或其他跟踪方式


2,顺便说一句,如果该方法第一次运行,那么编译时间将是0,因为完全没有编译过程,对吗

JVM标志:
-XX:+printcomilation-XX:+UnlockDiagnosticVMOptions-XX:+printcomilation2

    289  425       4       java.time.LocalDate::until (116 bytes)
    292  360       3       java.time.ZoneId::of (85 bytes)   made not entrant
    293  426       4       java.time.LocalDate::from (68 bytes)
    293  386       3       java.time.LocalDate::from (68 bytes)   made not entrant
    293  426   size: 248(96) time: 0 inlined: 54 bytes
    297  425   size: 3688(2272) time: 8 inlined: 1092 bytes
     ^    ^          ^                ^          ^
     |    |          |                |          |
     |    |          compiled bytes   |          bytecodes inlined
     |    compilation ID              method compilation time (ms)
     timestamp (ms from JVM start)
注意

  • 当应用程序运行时,JIT编译器在后台工作;不太可能导致延迟或超时
  • 通常有多个编译器线程<代码>打印编译输出可能出现交错
  • 一个方法可以使用不同的优化级别多次(重新)编译

JVM标志:
-XX:+printcomilation-XX:+UnlockDiagnosticVMOptions-XX:+printcomilation2

    289  425       4       java.time.LocalDate::until (116 bytes)
    292  360       3       java.time.ZoneId::of (85 bytes)   made not entrant
    293  426       4       java.time.LocalDate::from (68 bytes)
    293  386       3       java.time.LocalDate::from (68 bytes)   made not entrant
    293  426   size: 248(96) time: 0 inlined: 54 bytes
    297  425   size: 3688(2272) time: 8 inlined: 1092 bytes
     ^    ^          ^                ^          ^
     |    |          |                |          |
     |    |          compiled bytes   |          bytecodes inlined
     |    compilation ID              method compilation time (ms)
     timestamp (ms from JVM start)
注意

  • 当应用程序运行时,JIT编译器在后台工作;不太可能导致延迟或超时
  • 通常有多个编译器线程<代码>打印编译输出可能出现交错
  • 一个方法可以使用不同的优化级别多次(重新)编译
可以记录和显示jit编译日志

可以记录和显示jit编译日志


我们发现,在部署\启动应用程序之后,当同时有一个大客户机请求时,我们在客户机中遇到了许多超时错误,因此我们假设该问题可能是由于长时间的类加载或方法编译造成的,我不知道这个故障排除方向是否正确,您能给出一些建议吗?顺便说一句,当方法正在编译时,对该方法的请求是否会被阻止?或者它仍在执行解释,并在编译完成时切换到编译版本?@Jason compilation不会阻止方法执行。解释方法时在后台执行。@Jason使用探查器查找性能问题的原因。Andrei,我可以知道github.com/jvm-profiling-tools/async-profiler是否支持分析阻塞问题吗?或者它只是配置CPU时间?例如,方法等待IO操作完成的时间百分比。我们知道一些性能问题是由高CPU引起的,但是其他问题是由锁或IO阻塞引起的。我们得到的问题是,在部署\启动应用程序之后,当同时有一个大型客户端请求时,我们在客户端中遇到了许多超时错误,所以我们假设这个问题可能是由长时间的类加载或方法编译引起的,我不知道这个故障排除方向是否正确,您能给出一些建议吗?顺便说一句,当编译中的方法时,对该方法的请求是否会被阻止?或者它仍在执行解释,并在编译完成时切换到编译版本?@Jason compilation不会阻止方法执行。解释方法时在后台执行。@Jason使用探查器查找性能问题的原因。Andrei,我可以知道github.com/jvm-profiling-tools/async-profiler是否支持分析阻塞问题吗?或者它只是配置CPU时间?例如,方法等待IO操作完成的时间百分比。我们知道一些性能问题是由高CPU引起的,但是其他问题是由锁或IO阻塞引起的。感谢您提供信息,但是我们需要在Prod环境中进行故障排除,我不知道jitwatch是否会对性能产生很大影响。感谢您提供信息,然而,我们需要在Prod环境中进行故障排除,我不知道jitwatch是否会对性能产生很大影响。