当前位置:   article > 正文

jvm crash 的原因及解决办法_jvm坏了怎么修

jvm坏了怎么修

最近部署服务器时,总是会出现jvm fatal error 导致tomcat崩溃无法正常启动,以下是错误信息

Java代码 [这里是图片001]

  1. #AfatalerrorhasbeendetectedbytheJavaRuntimeEnvironment:

  2. #InternalError(c1_Optimizer.cpp:271),pid=1196,tid=4412

  3. #guarantee(x_compare_res!=Constant::not_comparable)failed:incomparableconstantsinIfOp

  4. #JREversion:6.0_25-b06

  5. #JavaVM:JavaHotSpot™ClientVM(20.0-b11mixedmodewindows-x86)

  6. #Ifyouwouldliketosubmitabugreport,pleasevisit:

  7. #http://java.sun.com/webapps/bugreport/crash.jsp

  8. ---------------THREAD---------------

  9. Currentthread(0x01213800):JavaThread"C1CompilerThread0"daemon[_thread_in_native,id=4412,stack(0x179f0000,0x17a40000)]

  10. Stack:[0x179f0000,0x17a40000],sp=0x17a3f554,freespace=317k

  11. Nativeframes:(J=compiledJavacode,j=interpreted,Vv=VMcode,C=nativecode)

这个问题在google上搜了很多文章,终于找到一片来自iteye网友的文章,和我遇到的问题基本类似,非常感谢。传送门:http://seanhe.iteye.com/blog/905997

问题的原因就在于 显示JIT在做编译优化的时候处理 某个方法时出错。
本利的错误是这个方法

Java代码 [这里是图片002]

  1. org.hibernate.cfg.annotations.SimpleValueBinder.setType

解决办法:让jvm跳过该方法的编译优化

在jvm启动参数中添加启动参数

Java代码 [这里是图片003]

  1. -XX:CompileCommand=exclude,org/hibernate/cfg/annotations/SimpleValueBinder,setType

如果是 eclipse下启动服务 ,则在eclipse-preference-java-installed jres 里面设置,
在 defalt vm arguments 填入上面的代码就可以了。

如果是 直接通过startup 启动tomcat ,则需要修改以下文件
Windows下,在文件/bin/catalina.bat,Unix下,在文件/bin/catalina.sh
找到

Java代码 [这里是图片004]

  1. setJAVA_OPTS=%JAVA_OPTS%%LOGGING_CONFIG%

修改为

Java代码 [这里是图片005]

  1. setJAVA_OPTS=%JAVA_OPTS%-XX:CompileCommand=exclude,org/hibernate/cfg/annotations/SimpleValueBinder,setType%LOGGING_CONFIG%
本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/木道寻08/article/detail/805437
推荐阅读
  

闽ICP备14008679号