我们有以下问题:在我们的一些Linux机器上,使用Trove库和G1 GC的Java应用程序会很快崩溃,并显示以下类型的消息:
这里引起我的注意的是问题框架,总是一样的。我习惯于在这里看到一些库,但从来没有看到实际的Java代码。奇怪的是,一些应该有相同设置的机器没有受到影响。在Windows上,我也从未见过这种情况。这个问题在最近的Java 7版本中仍然存在。将G1 GC从任何其他GC切换解决了这个问题。我们使用Maven解析Trove库,尝试了几个版本,包括3.0.3 - 总是出现同样的问题。
有人知道这是什么原因吗?有已知的G1 GC bug吗?Trove是否以特殊方式编译,可能会引起这个问题?
更新:不同的应用程序,不同的服务器,最新的Java(7u5),类似的问题:
A fatal error has been detected by the Java Runtime Environment:
SIGSEGV (0xb) at pc=0x00002aaaaaef81d1, pid=31063, tid=1141000512
JRE version: 6.0_29-b11
Java VM: Java HotSpot(TM) 64-Bit Server VM (20.4-b02 mixed mode linux-amd64 )
Problematic frame:
J gnu.trove.impl.hash.TObjectHash.insertKey(Ljava/lang/Object;)I
这里引起我的注意的是问题框架,总是一样的。我习惯于在这里看到一些库,但从来没有看到实际的Java代码。奇怪的是,一些应该有相同设置的机器没有受到影响。在Windows上,我也从未见过这种情况。这个问题在最近的Java 7版本中仍然存在。将G1 GC从任何其他GC切换解决了这个问题。我们使用Maven解析Trove库,尝试了几个版本,包括3.0.3 - 总是出现同样的问题。
有人知道这是什么原因吗?有已知的G1 GC bug吗?Trove是否以特殊方式编译,可能会引起这个问题?
更新:不同的应用程序,不同的服务器,最新的Java(7u5),类似的问题:
A fatal error has been detected by the Java Runtime Environment:
SIGSEGV (0xb) at pc=0x00002aadb7a38093, pid=14100, tid=46925573367184
JRE version: 7.0_05-b05
Java VM: Java HotSpot(TM) 64-Bit Server VM (23.1-b03 mixed mode linux-amd64 compressed oops)
Problematic frame:
J gnu.trove.map.hash.THashMap.put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
再次强调,切换到除G1之外的垃圾回收器将有所帮助。保留G1但是删除Trove库,问题也会消失。不幸的是,我无法创建最小化测试套件,因此很难提交合理的错误报告。对于原因有什么想法或者能够帮助我构建测试套件的任何想法吗?