JVM在libjvm.so中经常因Sigsegv Java致命错误而崩溃

JVM Crashing frequently with SIGSEGV Java Fatal Error in libjvm.so

本文关键字:Java Sigsegv 致命错误 崩溃 常因 libjvm so JVM      更新时间:2023-10-16

libjvm.so中有类似的stackoverflow问题。

这是一个在Apache Tomcat下运行的大型应用程序(〜30GB)。似乎总是会因相同的错误消息而失败,该消息似乎位于JVM C 代码中:

V  [libjvm.so+0x643ee4]  InstanceKlass::find_method_index(Array<Method*>*, Symbol*, Symbol*, bool, bool)+0x14

我包括了完整的Java核心转储。

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

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

查看转储,似乎当热点试图进行优化时发生了问题。因此,我检查了您在启动期间设置的Java属性,并且有一些影响:

-Xnoclassgc
据我所知,这与Java 8无用。与 相同
-XX:MaxPermSize=256m

您正在更改用于使用TP G1的垃圾收集器。

-XX:+UseG1GC

这可能与崩溃有关,因此我的建议是更改返回使用默认设置。如果撞车事故消失,G1不适合您的申请。

,正如我在评论中提到的那样,您需要清理WebApp的Lib-directory。有许多不同版本的重复库,例如bcprov-jdk14-140.jarbcprov-jdk14-1.38.jarbcmail-jdk14-139.jarbcmail-jdk14-1.38.jar,...这不会以您所看到的方式崩溃您的应用程序,但是当试图从版本1.39的BCMail加载邮件级时,它应该导致签名验证检查失败。与版本1.40的BC-Provider合作时。