在编译一些方法时,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 ...

Java相关问答推荐

在现有Json文件中添加新记录

获取拦截器内部的IP地址

无法在Java中将hhmmss格式的时间解析为LocalTime

如何在返回bigint []值的子查询中使用any?

Java记录的不同序列化/反序列化

Java中如何根据Font.canDisplay方法对字符串进行分段

使用Mockito进行的Junit测试失败

Spring和可编辑";where";@Query

如何集成语义发布和BitBucket(Java项目)

没有使用Lombok生成的参数

Android Java:已设置但未读取SharedPreferences

Java创建带有扩展通配符的抽象处理器

A.ForEach与For(类型a:集合)

寻找Thread.sky()方法的清晰度

如何处理两个几乎相同的XSD文件?

我的代码是线程安全的吗?[Java、CAS、转账]

从字节数组切换到JakartaMail org.springframework.mail.javamail.JavaMailSender InputStreamResource

HBox内部的左对齐按钮(如果重要的话,在页码内)

多线程、并发和睡眠未按预期工作

在不带instanceof或switch的java中记录模式