想象一下,6-7 台服务器的设置都与相同的 java 版本“1.6.0_18”OpenJDK 运行时环境 (IcedTea6 1.8) (fedora-36.b18.fc11-i386) OpenJDK Server VM(build 14.0-b16,混合模式)相同
每个人都运行一个程序(内存和 CPU 密集型)数小时甚至数天,多次成功完成(获取统计数据之类的东西),但在一台机器上,无论参数或我如何编译(javac -source 1.5 * .java/javac -O -source 1.5,javac **,自己想象任何组合:))
或运行它(-Xms200000k 或只是 java blabla.java 你明白了)
我最终得到,而不是在特定时刻或迭代“java.lang.ArrayIndexOutOfBoundsException:-1341472392”?!首先,该程序永远不会使用如此大的值,更不用说负值了。(代码行是一个包含整数的 ArrayList 调用)(这个数字每次都不同,正如我所注意到的)
另请注意,我可以“恢复”崩溃的测试,并且我可以在这台机器上进行更多测试,再次崩溃。
没什么麻烦,我不拥有这些盒子,而其他所有的盒子都可以工作,但这对我来说很奇怪。
出于个人兴趣,这在无论如何都不太乐观的 OpenJDK 上是如何发生的?