文档章节

jvm crash 的原因及解决办法

itwriter
 itwriter
发布于 2014/11/04 16:02
字数 385
阅读 16
收藏 0

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

Java代码  收藏代码

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

  2. #  

  3. #  Internal Error (c1_Optimizer.cpp:271), pid=1196, tid=4412  

  4. #  guarantee(x_compare_res != Constant::not_comparable) failed: incomparable constants in IfOp  

  5. #  

  6. # JRE version: 6.0_25-b06  

  7. # Java VM: Java HotSpot(TM) Client VM (20.0-b11 mixed mode windows-x86 )  

  8. # If you would like to submit a bug report, please visit:  

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

  10. #  

  11.   

  12. ---------------  T H R E A D  ---------------  

  13.   

  14. Current thread (0x01213800):  JavaThread "C1 CompilerThread0" daemon [_thread_in_native, id=4412, stack(0x179f0000,0x17a40000)]  

  15.   

  16. Stack: [0x179f0000,0x17a40000],  sp=0x17a3f554,  free space=317k  

  17. Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)  



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

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

Java代码  收藏代码

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



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

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

Java代码  收藏代码

  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代码  收藏代码

  1. set JAVA_OPTS=%JAVA_OPTS%  %LOGGING_CONFIG%  



修改为 

Java代码  收藏代码

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


本文转载自:http://sind.iteye.com/blog/1132459

itwriter
粉丝 12
博文 117
码字总数 23872
作品 0
海淀
程序员
私信 提问
【转】Java Crash原因汇总

如果是Java进程不知道什么原因退出或被杀死,想要分析具体原因,一般来说分下面几步: 1. 拿到Java应用程序的日志文件 2. 查找JVM的致命错误日志 3. 查找操作系统的core dump文件 4. 使用Dtr...

mj4738
2011/12/04
0
0
利用 Java dump 进行 JVM 故障诊断

引言 对于大型 java 应用程序来说,再精细的测试都难以堵住所有的漏洞,即便我们在测试阶段进行了大量卓有成效的工作,很多问题还是会在生产环境下暴露出来,并且很难在测试环境中进行重现。...

candies
2014/03/03
0
0
xpbob/CrashAnalysis

CrashAnalysis 功能介绍 这是一个jvm crash分析工具,主要分析jvm crash的原因,以及常见的解决手段。 使用方式 java -jar CrashAnalysis-1.0-SNAPSHOT.jar ${hserrpid.log} ${hserrpid.log}...

xpbob
2018/09/24
0
0
为什么 Java 会 Crash?

这份 PPT 是来自阿里巴巴淘宝核心技术组的莫枢。它讲述了 JVM 崩溃的各种情况,崩溃的原因,以及如何调试 JVM 崩溃。值得收藏,推荐! Java Crash分析(2012-05-10) View more presentation...

虫虫
2012/05/05
4.3K
13
导入代码时eclipse的src目录变为包名

初学Java网站开发,还是个菜鸟。用SVN和队友做项目,经常碰到从SVN上下载的项目,导入代码时eclipse的src目录变为包名,总是把src当包名附在每个包最前面,一直报错,改了吧,没法使用SVN同步...

惠风康桥
2012/12/12
0
8

没有更多内容

加载失败,请刷新页面

加载更多

Qt编写数据可视化大屏界面电子看板9-曲线效果

一、前言 为了编写数据可视化大屏界面电子看板系统,为了能够兼容Qt4和嵌入式linux系统,尤其是那种主频很低的,但是老板又需要在这种硬件上(比如树莓派、香橙派、全志H3、imx6)展示这么华...

飞扬青云
27分钟前
2
0
责任链模式

//这篇博客的博主真的不错,解析的都很清晰明了, https://blog.csdn.net/jason0539/article/details/45091639

南桥北木
53分钟前
3
0
Flutter -------- dio网络请求

dio是Flutter中文网开源的一个强大的Dart Http请求库,支持Restful API、FormData、拦截器、请求取消、Cookie管理、文件上传/下载、超时等... 1.添加依赖# dependencies: dio: 2.1.x #...

切切歆语
今天
1
0
PHP的学习

PHP变量的命名必须以$符开始,如: $i;$j;$name; $符后面的第一个字符不可以是数字,只能是字母或者下划线(_)。 除了下划线(_)之外,变量中不能出现任何特殊字符,也就是变量只能包含...

墨冥
今天
3
0
一篇文章彻底搞懂Java虚拟机

概念: 虚拟机:指以软件的方式模拟具有完整硬件系统功能、运行在一个完全隔离环境中的完整计算机系统 ,是物理机的软件实现。常用的虚拟机有VMWare,Visual Box,Java Virtual Machine(Jav...

骚年锦时
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部