最近部署服务器时,总是会出现jvm fatal error 导致tomcat崩溃无法正常启动,以下是错误信息
# A fatal error has been detected by the Java Runtime Environment:
#
# Internal Error (c1_Optimizer.cpp:271), pid=1196, tid=4412
# guarantee(x_compare_res != Constant::not_comparable) failed: incomparable constants in IfOp
#
# JRE version: 6.0_25-b06
# Java VM: Java HotSpot(TM) Client VM (20.0-b11 mixed mode windows-x86 )
# 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 (0x01213800): JavaThread "C1 CompilerThread0" daemon [_thread_in_native, id=4412, stack(0x179f0000,0x17a40000)]
Stack: [0x179f0000,0x17a40000], sp=0x17a3f554, free space=317k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
这个问题在google上搜了很多文章,终于找到一片来自iteye网友的文章,和我遇到的问题基本类似,非常感谢。传送门:http://seanhe.iteye.com/blog/905997
问题的原因就在于 显示JIT在做编译优化的时候处理 某个方法时出错。
本利的错误是这个方法
org.hibernate.cfg.annotations.SimpleValueBinder.setType
解决办法:让jvm跳过该方法的编译优化
在jvm启动参数中添加启动参数
-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
找到
set JAVA_OPTS=%JAVA_OPTS% %LOGGING_CONFIG%
修改为
set JAVA_OPTS=%JAVA_OPTS% -XX:CompileCommand=exclude,org/hibernate/cfg/annotations/SimpleValueBinder,setType %LOGGING_CONFIG%
分享到:
相关推荐
总之,理解和分析JVM崩溃日志是诊断和解决Java应用程序性能问题的关键步骤。通过深入研究日志内容,我们可以找到可能导致崩溃的原因,从而采取相应的优化措施或修复代码,确保应用的稳定性和可靠性。
通过对这个日志的深入分析,我们可以找出问题的原因并采取相应的解决措施。 首先,我们需要了解JVM崩溃的常见原因。这可能包括内存溢出(Out of Memory Error)、线程死锁、非法指令、系统资源耗尽等。错误日志通常...
"年轻代GC JVM crash"可能是因为在垃圾回收过程中遇到了严重问题,导致JVM崩溃。这可能是由于以下原因: 1. **内存溢出**:如果年轻代的空间不足以容纳新分配的对象,或者Survivor区无法容纳从Eden区晋升的对象,就...
标题"JVM Crash,生成hs_err_pid.log文件"指的是Java虚拟机在运行过程中遇到了致命问题,导致其终止运行,并自动生成了一个错误日志文件。这个文件通常位于JVM崩溃时的工作目录下,文件名由“hs_err_pid”和进程ID...
总之,JVM日志是诊断和解决问题的重要资源。通过深入理解和解读"hs_err_pid16819.log"这样的日志文件,开发者能够更好地理解Java应用程序的运行情况,从而提高系统的稳定性和性能。无论是源码级别的调试,还是工具的...
2. Java 虚拟机(JVM)的故障排除:该指南提供了 JVM 故障排除的方法和步骤,包括 JVM crash 的原因分析、堆栈跟踪的获取、JVM 配置文件的编辑等。 3. Java 应用程序的故障排除:该指南介绍了 Java 应用程序的故障...
如果"CRaSH"涉及多人协作问题,理解版本控制的基本操作和冲突解决策略是必要的。 9. **单元测试与持续集成**: 使用JUnit等工具进行单元测试,可以确保代码的质量和稳定性。持续集成工具如Jenkins、Travis CI等可以...
JVM内存包括堆(Heap)、方法区(Method Area)、栈(Stack)、本地方法栈(Native Method Stack)和程序计数器(PC Register)等部分,每个区域都有其特定的功能和可能引发的问题。 2. **堆内存分析**:堆内存是...
JVM自身可能遇到问题,如虚拟机崩溃(JVM Crash)、堆栈溢出(StackOverflowError)或配置错误。这些通常需要检查JVM配置、系统资源限制或更新JVM版本来解决。 理解和处理这些错误类型是成为熟练Java开发者的关键...
- **Crash文件分析**:当JVM出现异常崩溃时,往往会生成crash文件,通过分析这些文件可以定位到问题发生的具体原因。 - **内存分析**:使用工具如MAT(Memory Analyzer Tool)、VisualVM等分析堆内存和非堆内存的...
当 JVM 发生致命错误导致崩溃时,会生成一个 hs_err_pid_xxx.log 这样的文件,该文件包含了导致 JVM Crash 的重要信息,我们可以通过分析该文件定位到导致 JVM Crash 的原因,从而修复保证系统稳定。 默认情况下,...
- **JVM Crash问题诊断**:探讨导致JVM崩溃的常见原因,如OutOfMemoryError等,并学习如何通过日志文件和其他诊断工具定位问题。 通过本次实验,参与者不仅能深入理解WebSphere应用服务器的工作原理和潜在问题,还...
- **JVM Crash**:了解JVM的工作原理有助于快速定位并解决问题。 - **OutOfMemoryError**:能够有效管理和避免内存溢出问题。 - **线程与SMP**:充分利用多核处理器的能力,提高并发性能。 - **Hadoop性能**:针对大...
针对“jdk1.8 产生cash,jvm奔溃的问题”,我们将深入探讨可能的原因和解决方案。 首先,"cash"可能是笔误,正确的术语应该是“crash”,意为程序崩溃。Java应用崩溃通常与内存问题、线程死锁、错误的代码实现或不...
根据给定的信息,本文将详细探讨 WebLogic Server 的故障诊断方法与步骤,旨在为用户提供一套系统性的解决方案。文章首先简要介绍了故障诊断的基本流程,随后深入讲解了 Thread Dump 的概念及其在故障诊断中的应用,...
4. **更新JVM和库**:保持JVM及依赖库的最新版本,修复已知的bug。 5. **代码审查**:定期进行代码审查,找出并修复潜在的逻辑错误。 6. **监控和日志**:实时监控程序状态,记录详细的日志,便于故障排查。 7. **...
javacore 文件及 heapdump 文件分析 javacore 文件和 heapdump 文件是 Java 应用程序在遇到致命问题时产生的两个文件,这两个文件可以帮助我们分析和解决 Java 应用程序中的问题。 javacore 文件是一个文本文件,...
1. 活跃的NameNode的JVM发生崩溃(JVM crash); 2. 活跃的NameNode的JVM被冻结(例如使用SIGSTOP); 3. 活跃的NameNode所在的机器崩溃; 4. 活跃的NameNode变为不健康状态(goes unhealthy); 5. 活跃的ZKFC发生...
**1.1.2 JVM参数及调优** - **JVM参数**:例如-Xmx、-Xms、-XX:+UseParallelGC等,用于配置JVM的运行环境。 - **调优**:根据应用程序的需求调整JVM参数,提高性能或解决内存泄漏等问题。 **1.1.3 Java工具** - *...