我假设我不在这里查看JVM错误。其他Java程序运行良好,Sun的JVM可能比我的代码更稳定。
我认为您不应该做这个假设。如果不使用JNI,则您将无法编写导致SIGSEGV的Java代码(尽管我们知道它会发生)。我的意思是,发生这种情况时,它要么是JVM中的错误(并非闻所未闻),要么是某些JNI代码中的错误。如果您自己的代码中没有任何JNI,这并不意味着您没有使用某些库,因此请查找该库。当我以前看到这种问题时,它在图像处理库中。如果罪魁祸首不在您自己的JNI代码中,则可能无法“修复”该错误,但是您仍然可以解决该错误。
首先,您应该在同一平台上获得备用JVM,然后尝试重现它。您可以尝试以下替代方法之一。
如果无法重现,则可能是JVM错误。由此,您可以使用特定的知识来授权特定的JVM或搜索错误数据库,并获得建议的解决方法。(即使可以重现它,许多JVM实现也只是对Oracle
Hotspot实现的调整,因此它可能仍然是JVM错误。)
如果可以使用替代的JVM重现它,则 可能
是您有一些JNI错误。查看您正在使用的库以及它们可能在进行的本机调用。有时,对于同一库或执行几乎相同功能的替代库,存在替代的“纯Java”配置或jar文件。
祝好运!



