JVM在libjvm.so中经常出现SIGSEGV Java致命错误

时间:2017-09-19 20:48:47

标签: java c++ tomcat crash jvm

有关此问题的类似stackoverflow问题SIGSEGV Java Fatal Error in libjvm.so

这是一个在apache tomcat下运行的大型应用程序(~30GB)。似乎始终失败并显示相同的错误消息,该消息似乎在JVM C ++代码中:

{{1}}

我已经包含了完整的java核心转储。

https://drive.google.com/open?id=0B0rh8NWt2kRySTlleW9Dckw3a3c

任何人都可以指出我如何开始解决这个问题的正确方向。我试图将JDK升级到最新版本(JDK 1.8版本144),但无济于事。

1 个答案:

答案 0 :(得分:0)

查看转储,似乎问题发生在Hotspot尝试进行优化时。所以我检查了你在启动时设置的java属性,并且有一些对它有影响:

-Xnoclassgc

据我所知,这对Java 8没有用处。与

相同
-XX:MaxPermSize=256m

您正在更改要使用的垃圾收集器tp G1

-XX:+UseG1GC

这可能与崩溃有关,所以我的建议是将设置更改为使用默认设置。如果崩溃消失,G1不适合您的应用程序。

正如我在评论中提到的,你需要清理你的webapp的lib目录。有许多不同版本的重复库,例如bcprov-jdk14-140.jarbcprov-jdk14-1.38.jarbcmail-jdk14-139.jarbcmail-jdk14-1.38.jar,...这不会以您看到的方式使您的应用程序崩溃,但会导致签名验证检查失败在尝试从版本1.39的bcmail加载邮件类时,在类加载器中使用版本1.40的BC-provider。