在我们的 Java 环境中,我们似乎遇到了一个奇怪的错误。我们现在已经发生了两次相同的“不可能发生”异常;在一个案例中,问题在运行过程中的 48 分钟内发生了 42,551 次,然后自发地自行解决。
失败的代码由这一行触发:
return String.format("%1d%XY%d", source, System.currentTimeMillis(), quoteID);
在哪里int source = 0
和long quoteID = 44386874
(例如)。
例外是:
java.util.UnknownFormatConversionException: Conversion = 'd'
at java.util.Formatter$FormatSpecifier.conversion(Formatter.java:2605)
at java.util.Formatter$FormatSpecifier.<init>(Formatter.java:2633)
at java.util.Formatter.parse(Formatter.java:2479)
at java.util.Formatter.format(Formatter.java:2413)
at java.util.Formatter.format(Formatter.java:2366)
at java.lang.String.format(String.java:2770)
检查代码'd'
不应引发此异常。
我们想出的最好的解释是 JIT 编译器生成了错误的字节码,但在随后的重新 JIT 中它编写了好的代码。
任何人都有解决/诊断此类问题的方法的经验吗?
罗杰。