`
can_do
  • 浏览: 266039 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

JVM Crash by libjvm.so+0x48acf3

阅读更多
>>问题现象

环境: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和类之间用【,】隔开。

【温馨提示】
如果您觉得满意,可以选择支持下,您的支持是我最大的动力:

分享到:
评论

相关推荐

    ERROR: Cannot chcon libjvm.so 日志

    libjvm.so是Java虚拟机(JVM)的核心库文件,它包含了JVM执行Java代码所需的基本组件。当系统尝试运行Java程序或服务时,如果遇到“Cannot chcon libjvm.so”错误,可能意味着SELinux策略不允许对这个特定的库文件...

    startJVM错误Unable to load native library: libjvm.so解决方法

    主要介绍了startJVM错误Unable to load native library: libjvm.so解决方法,需要的朋友可以参考下

    同时支持linux和Windows下java与串口通信的rxtx包,亲测可用

    cp librxtxSerial.so $JAVA_HOME/jre/lib/amd64/ cp RXTXcomm.jar $JAVA_HOME/jre/lib/ext windows下安装路径为: Copy RXTXcomm.jar ---&gt; &lt;JAVA_HOME&gt;\jre\lib\ext Copy rxtxSerial.dll ---&gt; &lt;JAVA_HOME&gt;\jre...

    JVM崩溃

    标题中的“JVM崩溃”指的是Java虚拟机(Java Virtual Machine)在运行过程中遇到了无法处理的错误,导致程序异常终止的现象。这通常是由于内存溢出、类装载错误、线程死锁或其他严重问题引起的。理解JVM崩溃的原因和...

    sigar-amd64-winnt.dll,修复jvm崩溃版本

    此为修复版本,下载后直接使用即可 版本号:1.6.4,大家去下载jar的时候别搞错了!

    深入理解Java虚拟机(jvm性能调优+内存模型+虚拟机原理).zip

    《深入理解Java虚拟机》是一本深度探讨Java虚拟机(JVM)的著作,涵盖了JVM性能调优、内存模型以及虚拟机原理等多个关键领域。本文将基于这些主题,详细阐述其中的重要知识点。 首先,我们要了解Java虚拟机(JVM)...

    JVM中文指令手册.pdf

    3. 操作码:操作码是JVM指令的数字表示,用于告诉JVM要执行的具体操作。例如,iconst_m1(0x02)指令将int型的-1值推送到操作数栈上。每个操作码都对应唯一的指令和操作,有助于理解JVM内部指令集的结构。 4. null...

    Python库 | jvm-0.4.0b2.zip

    在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集成:JVM1.2版本1.0的jar.zip包解析》 在软件开发领域,Ant和Eclipse是两个重要的工具。Ant是Apache软件基金会下的一个Java项目,它是一个基于XML的构建工具,常用于自动化Java项目的构建、测试和...

    liblept.so和libtesseract.so文件(32位和64位)

    4. **配置Tess4J**:在Java项目中,配置Tess4J指向正确的库路径,并确保Java虚拟机(JVM)能正确加载这些库。 解决这个问题不仅需要对操作系统和编程环境有深入理解,还需要一定的耐心和技巧,因为不同架构之间的...

    jvm性能调优+内存模型+虚拟机

    jvm性能调优+内存模型+虚拟机 jvm性能调优+内存模型+虚拟机 jvm性能调优+内存模型+虚拟机

    jvm crash的崩溃日志详细分析及注意点

    JVM(Java Virtual Machine)是Java程序运行的核心组件,它负责解释和执行字节码。然而,当JVM出现严重错误或无法恢复的问题时,它可能会崩溃并生成一个崩溃日志,这通常被称为`hs_err_pid.log`文件。这篇内容将深入...

    libfreetype.so.6.12.1

    error while loading shared libraries: libfreetype.so.6: cannot open shared object file: No such file or directory 缺少的文件libfreetype.so.6

    jvm调优实用工具.rar

    在Java开发领域,JVM(Java Virtual Machine)调优是一项至关重要的任务,它关系到应用程序的性能、稳定性和资源利用效率。"jvm调优实用工具.rar"这个压缩包文件显然是为了提供帮助开发者进行JVM优化的相关工具和...

    (二)MATJVM 内存分析工具.MAT JVM 内存分析工具.MAT JVM 内存分析工具.

    MAT JVM内存分析工具可以帮助开发者深入理解Java虚拟机(JVM)的内存管理机制,通过分析堆内存快照来识别内存消耗异常的情况。 首先,MAT提供了丰富的视图来帮助用户查看内存状态,例如“概述”视图可以快速了解堆...

    深入理解Java虚拟机(jvm性能调优+内存模型+虚拟机原理).txt

    深入理解Java虚拟机详细视频教程,包括jvm性能调优、Java内存模型及虚拟机原理。有详细的文档资料,配合深入理解Java虚拟机书籍学习效果更佳

    magic-script是一款基于JVM的脚本语言.zip

    magic-script是一款基于JVM的脚本语言.zipmagic-script是一款基于JVM的脚本语言.zipmagic-script是一款基于JVM的脚本语言.zipmagic-script是一款基于JVM的脚本语言.zipmagic-script是一款基于JVM的脚本语言.zip

    JVM crash 错误日志分析

    在Java开发过程中,JVM(Java Virtual Machine)的崩溃可能会导致应用程序无法正常运行,严重影响服务的稳定性和用户体验。当JVM出现崩溃时,系统会产生一个名为“hs_err_pid.log”的错误日志文件,这个文件包含了...

    JVM GC垃圾回收.pdf

    JVM GC垃圾回收.pdf

    面试总结-JVM .png

    JVM 的运行机制 多线程 JVM 的内存区域 JVM 会创建操作系统的接口创建一个原生线程。JVM 线程和操作系统线程是一一对应的

Global site tag (gtag.js) - Google Analytics