在编译一些方法时,C2编译器线程正在分配高内存(在本机内存跟踪的帮助下得到确认).问题是随机复制的,不能用测试代码复制.
编译实际上失败,出现以下错误:编译跳过:不支持的调用序列(在不同层重试)
在这种有问题的编译过程中,如何记录JVM的状态并转储所谓的"Compiler_Replay_Data"文件?
在一些关于JVM崩溃的JDK错误报告中,可以看到重放文件非常有用.如何为我的高内存占用情况生成一个这样的实例?
在编译一些方法时,C2编译器线程正在分配高内存(在本机内存跟踪的帮助下得到确认).问题是随机复制的,不能用测试代码复制.
编译实际上失败,出现以下错误:编译跳过:不支持的调用序列(在不同层重试)
在这种有问题的编译过程中,如何记录JVM的状态并转储所谓的"Compiler_Replay_Data"文件?
在一些关于JVM崩溃的JDK错误报告中,可以看到重放文件非常有用.如何为我的高内存占用情况生成一个这样的实例?
您可以使用-XX:CompileCommand
来启用特定方法的重播数据记录:
java -XX:CompileCommand=option,ClassName::methodName,DumpReplay ...
ClassName
和/或methodName
可以用*
指定为通配符.例如,要转储所有java.lang
个类的重播数据,请使用
java -XX:CompileCommand=option,java.lang.*::*,DumpReplay ...
如果在JIT编译期间JVM崩溃,重放数据也会自动保存.您可以使用以下选项在编译失败时强制JVM崩溃:
java -XX:+UnlockDiagnosticVMOptions -XX:+AbortVMOnCompilationFailure ...