昨天遇到一个问题,公司的一个军方项目组在使用我们的服务器
在部署应用时频繁的重启,卸载应用时也存在这种现象
而服务器的日志仅捕获了少许信息,详细的关于服务器本身的没有记录,因此怀疑是JVM发生了致命错误使得服务器不及写日志就退出了,于是在服务器bin目录下查找,果然发现了以 "hs_err_pid" 开头的日志名,报的异常大致如下:
# An unexpected error has been detected by HotSpot Virtual Machine:
#
# EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x7c938fea, pid=3028, tid=2368
#
# Java VM: Java HotSpot(TM) Client VM (1.5.0_12-b04 mixed mode)
# Problematic frame:
# C [ntdll.dll+0x18fea]
...
Heap
def new generation total 4608K, used 3054K [0x027b0000, 0x02ca0000, 0x07670000)
eden space 4160K, 68% used [0x027b0000, 0x02a7bf50, 0x02bc0000)
from space 448K, 42% used [0x02bc0000, 0x02befc38, 0x02c30000)
to space 448K, 0% used [0x02c30000, 0x02c30000, 0x02ca0000)
tenured generation total 58136K, used 38983K [0x07670000, 0x0af36000, 0x427b0000)
the space 58136K, 67% used [0x07670000, 0x09c81d28, 0x09c81e00, 0x0af36000)
compacting perm gen total 63232K, used 63228K [0x427b0000, 0x46570000, 0x527b0000)
the space 63232K, 99% used [0x427b0000, 0x4656f3c8, 0x4656f400, 0x46570000)
No shared spaces configured.
起初觉得应该是内存溢出导致的, 于是增加内存参数,但问题依旧,而由于军方项目组保密设施比较严格, 没有网络和电话
所以查找问题也比较被动,而且此类问题第一次遇到所以只能怀疑程序本身有问题,是不是操作数据库后没有及时关闭等
但项目组成员反馈,项目组4台机器中两台正常,两台存在此类现象,而且机器硬件配置相同,安装的软件版本也相同。
由于没有好的解决办法,只好回来之后上网搜索相关资料。经google一下后发现,此问题很常见,但都没有好的解决办法
于是按照各网友给出的建议挨个尝试,但都没效果
后来找到一篇文章里面解释了异常的一些信息才有了些许线索。
异常中的
# C [ntdll.dll+0x18fea]这里的C表示,jvm是在调用本地方法的时候挂了
于是怀疑是不是程序中调用了本地方法,但项目组说就是一个普通的web应用并没有使用任何的本地方法
但异常提示如此所以怀疑是某些软件和jdk冲突,但既然是jvm调用本地方法时出错,就很可能是和杀毒软件有冲突
后对比发现,能正常使用的安装的是卡巴,而不能正常使用的安装的都是nod32.
于是卸载nod32后问题解决。
分享到:
相关推荐
"年轻代GC JVM crash"可能是因为在垃圾回收过程中遇到了严重问题,导致JVM崩溃。这可能是由于以下原因: 1. **内存溢出**:如果年轻代的空间不足以容纳新分配的对象,或者Survivor区无法容纳从Eden区晋升的对象,就...
### 美团JVM问题定位和排错 #### 背景 在现代软件开发中,Java虚拟机(JVM)作为运行Java程序的基础平台,对于任何使用Java语言进行开发的服务都至关重要。然而,在实际运行过程中,由于复杂的运行环境和技术栈的...
本篇文章将深入探讨JVM的一些常见问题,这些内容对于理解和优化Java应用程序至关重要,同时也是面试中的高频考察点。 一、JVM内存结构 1. **堆内存**:Java对象主要存放在堆内存中,它是所有线程共享的一块区域,...
### JVM问题排查工具手册 #### 一、概述 在日常的软件开发与维护过程中,针对JVM(Java虚拟机)的性能调优和问题排查是非常关键的一环。本手册旨在提供一套全面且实用的JVM问题排查方法和技术,帮助开发者快速定位...
本文主要探讨了JVM性能优化的步骤和常见问题,特别是关于Full GC的问题及其调优策略。 首先,JVM性能优化的步骤包括四个关键环节: 1. 预估系统参数:在优化前,需要预先评估系统的硬件资源和预期的负载,为JVM配置...
Java虚拟机(JVM)是Java程序运行的核心组件,它负责解释和执行字节码,为开发者...理论学习后,实践操作是巩固知识的关键,尝试在实际项目中应用这些知识,解决性能问题,优化JVM配置,将使你对JVM的理解更加深入。
### JVM 详细介绍:掌握 JVM 的各个组成部分与功能 #### 一、Java 源文件编译及执行 Java 应用程序的核心...理解 JVM 的内部工作原理有助于开发者更好地编写高质量的 Java 应用程序,并有效解决运行时遇到的问题。
- **内存分析**:通过分析JVM内存使用情况,可以优化程序性能,避免如Full GC频繁发生等性能问题。 #### 8. 垃圾收集与收集器 - **垃圾收集**:指JVM回收那些不再被使用的对象占用的内存空间。 - **垃圾收集器**:...
- JVM在运行过程中,将频繁执行的热点代码编译成机器码,提高执行效率。 10. **异常处理**: - JVM如何处理运行时异常,如栈展开(Stack Unwinding)过程。 这些知识点覆盖了JVM的基础到进阶内容,适合初学者和...
下面,我们就一起来深入学习Monkey老师关于JVM调优的核心知识点。 首先,我们要明白JVM的重要性。它是Java程序运行的基础,负责字节码的解释执行、内存管理以及性能优化等关键任务。理解JVM的工作机制,对于提高...
### JVM核心知识点解析 #### JVM概述 JVM(Java Virtual Machine)是运行Java字节码的虚拟机,它为Java程序提供了平台独立性,使得Java程序可以在任何支持JVM的平台上运行而无需重新编译。JVM的主要组成部分包括类...
此外,提到内存溢出的问题,当应用程序需要的内存超过堆的最大值时,会导致JVM抛出内存溢出异常,使服务崩溃。通常建议将最大内存设置为物理内存的80%,以确保有足够的空间给其他系统进程。 垃圾回收的效率和频率与...
本项目案例分析旨在帮助开发者提升对JVM的理解,优化代码性能,解决实际开发中遇到的问题。 首先,我们要理解JVM的工作原理。JVM接收编译后的字节码(.class文件),并将其转换为机器语言执行。这个过程包括类加载...
此外,JVM还支持即时编译(JIT),将频繁执行的字节码编译成本地代码,提高执行效率。 4. 垃圾收集器:自动管理内存,避免内存泄漏和溢出问题。JVM的垃圾收集策略包括标记-清除、复制、标记-整理和分代收集等。 四...
内存溢出(Out Of Memory,OOM)是JVM运行过程中常见的问题,主要类型有堆溢出、栈溢出、方法区溢出等。通过分析日志和调整参数可以解决这些问题。 总结,JVM是Java编程的关键组成部分,理解其工作原理、内存模型和...
在描述中提到了一个博客链接,虽然具体内容没有提供,但可以推测博主可能分享了关于JVM崩溃的案例分析或解决方案。通常,遇到JVM崩溃时,开发者会查看错误日志来定位问题。在给定的文件名"hs_err_pid26290.log"中,...
此外,JVM还提供了丰富的诊断工具,如JConsole、VisualVM和JProfiler等,帮助开发者监控JVM状态,定位性能瓶颈,进行问题排查。这些工具能显示CPU使用率、内存分配、线程状态等关键信息,对于理解和优化JVM至关重要...
### JVM内存问题最佳实践 #### 一、选择合适的Java虚拟机 在选择Java虚拟机(JVM)时,有几个关键因素需要考虑。首先,确保选择一个稳定的版本是非常重要的。避免使用刚刚发布或刚添加了大量新功能的版本,因为这些...
现代JVM如HotSpot包含即时编译(JIT)技术,它可以将频繁执行的字节码片段编译为本地机器码,以提高执行效率。这个过程涉及到指令集的动态优化,如栈深度分析、循环展开、方法内联等。 5. **理解JVM指令集的意义**...
以下是一些关于JVM性能优化的关键知识点: 1. **内存管理:** - **堆内存**:Java对象主要存储在堆内存中,分为新生代(Young Generation)和老年代(Old Generation)。新生代又细分为Eden区和两个Survivor区。...