我们的Java环境似乎受到了奇怪的错误影响。
我们已经遇到了两次同样的“不可能发生”的异常;其中一个问题在运行过程中出现了42,551次,持续了48分钟,然后自动清除。
代码失败是因为这一行触发的:
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时会写入良好的代码。
有人有解决/诊断此类问题的经验吗?
罗杰。