Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 编译器线程上的JVM崩溃_Java_Crash_Jvm_Jvm Hotspot - Fatal编程技术网

Java 编译器线程上的JVM崩溃

Java 编译器线程上的JVM崩溃,java,crash,jvm,jvm-hotspot,Java,Crash,Jvm,Jvm Hotspot,我的java应用程序在尝试编译特定方法(总是相同的方法)时几乎总是崩溃,SIGSEGV: A fatal error has been detected by the Java Runtime Environment: SIGSEGV (0xb) at pc=0x00002aaaab6642a5, pid=8348, tid=1087596864 JRE version: 6.0_16-b01 Java VM: Java HotSpot(TM) 64-Bit Server VM (

我的java应用程序在尝试编译特定方法(总是相同的方法)时几乎总是崩溃,SIGSEGV:

 A fatal error has been detected by the Java Runtime Environment:

  SIGSEGV (0xb) at pc=0x00002aaaab6642a5, pid=8348, tid=1087596864

 JRE version: 6.0_16-b01
 Java VM: Java HotSpot(TM) 64-Bit Server VM (14.2-b01 mixed mode linux-amd64 )
 Problematic frame:
 V  [libjvm.so+0x5332a5]

 An error report file with more information is saved as:
 hs_err_pid8348.log

 If you would like to submit a bug report, please visit:
   http://java.sun.com/webapps/bugreport/crash.jsp
崩溃日志(有趣的部分…):


我试图创建一个核心转储并连接到它,但我在那里找不到编译器线程(可能它被杀死了,因为JRE 6.0_16版太旧了。我建议升级到当前的JRE,很有可能会修复此崩溃。

发布整个页面(包括库的额外信息)如果你看到内核转储,你就看不到任何线程

如果问题包括zlib(ZipEntry),那么你部分是运气不好。。。
在zlip中,这是一个非常恼人的错误,非常粗体,如果zip(jar)在打开后发生更改,就会发生错误。我仍然想知道为什么Sun/Oracle使用本机库进行zip处理,因为纯java更稳定,速度…快2倍(性能方面).

如果这是一个选项,您可以通过将此参数添加到java可执行调用中,从运行时排除导致崩溃的方法
-XX:CompileCommand=exclude,com/path/to/class/in/Jar$InnerClassIfAny.methodName

导致崩溃的类和方法的名称可以在崩溃报告(hs_err_pidxxxx.log)的右上方找到

------------p R O C E S------------------

马克


注意:在Unix环境中,应该像这样转义内部类(如果有),而不是手动优化所涉及的方法。

当前线程(0x00002aab1f7ac800):JavaThread“CompilerThread0”守护程序[_thread_in_native,id=8694,堆栈(0x0000000040c36000,0x00000000
40d37000)]

在这一行下面,您应该看到hotspot引擎试图优化的特定方法。您可能在hotspot中遇到了一些有问题的代码。很难确定到底遇到了什么代码以及原因

我遇到了这个问题,我解决了它。所涉及的方法是以一种非常非优化的方式编写的。创建了不必要的数据结构,添加了额外的循环,还创建了额外的变量,并且只使用了一次。我对这个方法进行了越来越多的迭代优化,直到它最终在最终测试后没有抛出异常为止迭代是非常低级的,几乎是吹毛求疵的优化

我相信最终,热点引擎中触发的某种字节码优化例程中出现了一个bug。几乎无法确切知道发生了什么。但我认为,通过手动优化代码,我优化了字节码,使得热点引擎不再运行有bug的例程


我知道这还不确定,但我希望我的故事能对你和未来的访问者有所帮助。祝你好运!

这是我环境中的最新版本……目前无法升级。@duduamar:那么我担心你会遇到这个问题。除非你想进入JVM的二进制内部,否则你无法调试它(你真的不知道)。升级JVM是解决这个问题的唯一办法。@skafmman:你知道6.0_16中的一个开放bug可以解释这一点吗?@ekeren:没有,没有。但是,这是我唯一能建议的,而且经常有效。@bestsss你说的ZipEntry-libzip是什么意思?是的(我这么说是为了取悦char.length)@bestsss:你有描述这个问题的链接吗?@ekeren:我有崩溃转储,尽管有完全可复制的行为,但sun认为:“11关闭,不可复制,错误”@bestsss:他们使用本机zlib也特别令人遗憾,因为它已经是至少一个安全问题的根本原因(缓冲区溢出IIRC),如果他们使用Java编写的方法,这是不可能的……但也许这里有一些第22条军规,dunno,还没有真正研究过。你是如何使用JIT手动优化方法的?请告诉我。我也面临着同样的问题。我没有使用JIT。在我的情况下,下一行中提到的方法是Methodo我通过删除不必要的代码和循环对该方法进行了优化。如果该方法已经进行了优化,我会尝试以不同的方式进行分解-调整算法,使步骤略有不同。
 A fatal error has been detected by the Java Runtime Environment:

  SIGSEGV (0xb) at pc=0x00002aaaab6642a5, pid=8348, tid=1087596864

 JRE version: 6.0_16-b01
 Java VM: Java HotSpot(TM) 64-Bit Server VM (14.2-b01 mixed mode linux-amd64 )
 Problematic frame:
 V  [libjvm.so+0x5332a5]

 If you would like to submit a bug report, please visit:
   http://java.sun.com/webapps/bugreport/crash.jsp

---------------  T H R E A D  ---------------

Current thread (0x00002aab1f7ac800):  JavaThread "CompilerThread0" daemon [_thread_in_native, id=8694, stack(0x0000000040c36000,0x00000000
40d37000)]