>>问题现象
环境:NeoShine Linux+Jdk 1.5.0_17+Apusic 403
JVM crash掉,产生hs_err_pid<pid>.log文件。
>>日志情况
主要日志信息如下:
JVM crash main information:
1.JVM:(1.5.0_17-b04 mixed mode)
A fatal error has been detected by the Java Runtime Environment:
2.SIGSEGV (0xb)
3.libjvm.so+0x48acf3
4.Java Threads: ( => current thread )
ComiplerThread [_thread_in_native]
5.Current CompileTask:
com.apusic.net.Muxer.acceptConnection(SocketAdaptor paramSocketAdaptor)
6.Heap的使用情况正常。
>>问题分析
通过最近两次的JVM crash的日志来看,此两次的日志信息是一样的,都是因为JavaThread的CompilerThread[_thread_in_native]堵塞引起,而Heap的使用情况正常。
经查看JVM的配置参数发现,多了一个JPDA的参数,如下:
"-Xdebug -Xrunjdwp:server=y,suspend=n,transport=dt_socket,address=6888"
在Apusic的Normal启动方式中多添加了:JPDA参数,而且开发商是以normal方式启动的,此参数应该在debug模式下使用,而不要在normal和product模式下使用。
此问题也有可能是JDK的一个bug。
>>解决方案
通过参阅sun网站上的问题报告及相关资料,提出如下解决方法:
1、 删掉JVM中的JPDA参数,即删掉:
"-Xdebug -Xrunjdwp:server=y,suspend=n,transport=dt_socket,address=6888"
2、 在JVM的启动参数中加上:
-XX:-EliminateLocks
解决jdk1.5.0_17的一个bug。
并且将GC的策略由原来的CMS调整为如下:(以下为主要参数)
-server -Xms1024m -Xmx1024m -XX:PermSize=128m -XX:MaxPermSize=128m -XX:MaxNewSize=384M -XX:NewSize=384M -XX:SurvivorRatio=8 -Xss512K -XX:+UseParallelGC -XX:ParallelGCThreads=8 -XX:+ParallelRefProcEnabled -XX:+DisableExplicitGC -XX:+HeapDumpOnOutOfMemoryError
3、 对OS和Apusic进行再优化:
3.1、Apusic范围的OS方面配置如下:
ulimit -n 65535
ulimit -s 20480
3.2、Apusic线程池调优及KeepAlive参数调整:
HttpHandler
MuxHandler
KeepAlive
-Dcom.apusic.net.bio=true
建议:以nohup和生产模式启动Apusic。
参见:sun 官网:http://www.oracle.com/technetwork/java/javase/crashes-137240.html#gbyzu
4.1.4 Crash in the HotSpot Compiler Thread
Tips:排除某些类方法的编译,可以配置如下JVM参数:
-XX:CompileCommand=exclude,com/apusic/net/Muxer.acceptConnection
注意:类是包全路径,标识符之间用【/】隔开,而类名和方法点用英文句号【.】隔开,动作exclude和类之间用【,】隔开。
【温馨提示】
如果您觉得满意,可以选择支持下,您的支持是我最大的动力:
分享到:
相关推荐
libjvm.so是Java虚拟机(JVM)的核心库文件,它包含了JVM执行Java代码所需的基本组件。当系统尝试运行Java程序或服务时,如果遇到“Cannot chcon libjvm.so”错误,可能意味着SELinux策略不允许对这个特定的库文件...
主要介绍了startJVM错误Unable to load native library: libjvm.so解决方法,需要的朋友可以参考下
cp librxtxSerial.so $JAVA_HOME/jre/lib/amd64/ cp RXTXcomm.jar $JAVA_HOME/jre/lib/ext windows下安装路径为: Copy RXTXcomm.jar ---> <JAVA_HOME>\jre\lib\ext Copy rxtxSerial.dll ---> <JAVA_HOME>\jre...
标题中的“JVM崩溃”指的是Java虚拟机(Java Virtual Machine)在运行过程中遇到了无法处理的错误,导致程序异常终止的现象。这通常是由于内存溢出、类装载错误、线程死锁或其他严重问题引起的。理解JVM崩溃的原因和...
此为修复版本,下载后直接使用即可 版本号:1.6.4,大家去下载jar的时候别搞错了!
《深入理解Java虚拟机》是一本深度探讨Java虚拟机(JVM)的著作,涵盖了JVM性能调优、内存模型以及虚拟机原理等多个关键领域。本文将基于这些主题,详细阐述其中的重要知识点。 首先,我们要了解Java虚拟机(JVM)...
3. 操作码:操作码是JVM指令的数字表示,用于告诉JVM要执行的具体操作。例如,iconst_m1(0x02)指令将int型的-1值推送到操作数栈上。每个操作码都对应唯一的指令和操作,有助于理解JVM内部指令集的结构。 4. null...
在Python中,`jvm-0.4.0b2.zip`这个库显然是与Java虚拟机(JVM)相关的,可能是为了在Python环境中与Java进行交互或者调用Java的类库。下面我们将深入探讨Python中的Java接口、如何使用Python库与Java集成,以及`jvm...
《Ant与Eclipse集成:JVM1.2版本1.0的jar.zip包解析》 在软件开发领域,Ant和Eclipse是两个重要的工具。Ant是Apache软件基金会下的一个Java项目,它是一个基于XML的构建工具,常用于自动化Java项目的构建、测试和...
4. **配置Tess4J**:在Java项目中,配置Tess4J指向正确的库路径,并确保Java虚拟机(JVM)能正确加载这些库。 解决这个问题不仅需要对操作系统和编程环境有深入理解,还需要一定的耐心和技巧,因为不同架构之间的...
jvm性能调优+内存模型+虚拟机 jvm性能调优+内存模型+虚拟机 jvm性能调优+内存模型+虚拟机
JVM(Java Virtual Machine)是Java程序运行的核心组件,它负责解释和执行字节码。然而,当JVM出现严重错误或无法恢复的问题时,它可能会崩溃并生成一个崩溃日志,这通常被称为`hs_err_pid.log`文件。这篇内容将深入...
error while loading shared libraries: libfreetype.so.6: cannot open shared object file: No such file or directory 缺少的文件libfreetype.so.6
在Java开发领域,JVM(Java Virtual Machine)调优是一项至关重要的任务,它关系到应用程序的性能、稳定性和资源利用效率。"jvm调优实用工具.rar"这个压缩包文件显然是为了提供帮助开发者进行JVM优化的相关工具和...
MAT JVM内存分析工具可以帮助开发者深入理解Java虚拟机(JVM)的内存管理机制,通过分析堆内存快照来识别内存消耗异常的情况。 首先,MAT提供了丰富的视图来帮助用户查看内存状态,例如“概述”视图可以快速了解堆...
深入理解Java虚拟机详细视频教程,包括jvm性能调优、Java内存模型及虚拟机原理。有详细的文档资料,配合深入理解Java虚拟机书籍学习效果更佳
magic-script是一款基于JVM的脚本语言.zipmagic-script是一款基于JVM的脚本语言.zipmagic-script是一款基于JVM的脚本语言.zipmagic-script是一款基于JVM的脚本语言.zipmagic-script是一款基于JVM的脚本语言.zip
在Java开发过程中,JVM(Java Virtual Machine)的崩溃可能会导致应用程序无法正常运行,严重影响服务的稳定性和用户体验。当JVM出现崩溃时,系统会产生一个名为“hs_err_pid.log”的错误日志文件,这个文件包含了...
JVM GC垃圾回收.pdf
JVM 的运行机制 多线程 JVM 的内存区域 JVM 会创建操作系统的接口创建一个原生线程。JVM 线程和操作系统线程是一一对应的