最近公司线上部分服务器出现了gc异常崩溃,检查了下异常崩溃日志,但是应用日志并没有出现很大的异常,但是在日志文件系统发现了hs_err_pid32506.log日志,这基本判定是jvm 异常了
打开日志文件
当时线程崩溃的是GCTaskThread
这个是当时所有Thread的列表,执行的线程exited是GCTaskThread
这块就发现是eden区域满了的时候发生了异常,然后查了些资料,发现是sun jdk在1.6的版本中,由于优化了垃圾回收算法,但是如果出现了和新生代区域大小差不多的对象时,就会引发这种crash,在启动参数中加入 -XX:-ReduceInitialCardMarks参数不要优化策略可解决。
相关推荐
- **内存配置**:合理设置堆内存大小、年轻代与老年代比例等。 - **GC算法选择**:根据应用场景选择合适的垃圾回收算法。 - **并行度配置**:调整并行回收线程数量,平衡CPU使用率和响应时间。 - **其他参数**:启用...
例如,在JVM crash的情况下,通常会在工作目录下自动生成一个error文件,该文件包含了crash时的详细信息,包括但不限于信号类型、错误码、问题发生的框架及堆栈信息。 在提供的案例中,可以看到JVM crash的日志信息...
- **垃圾回收**:GC机制,了解不同GC算法如 Minor GC、Major GC、Full GC,以及G1、ZGC等现代垃圾回收器。 - **性能调优**:JVM参数设置,如堆大小、新生代与老年代比例、栈深度等。 4. **计算机网络**: - **...
G1垃圾收集器是Java虚拟机(JVM)的一部分,它引入了区域(Region)的概念,将堆内存划分为多个固定大小的区域,并采用分代收集策略。 在G1收集器的工作流程中,区域可以被分为新生代(Young Generation)、老年代...
了解并调整GC参数,如新生代大小和老年代大小,对于优化性能至关重要。 3. **线程死锁**:多线程编程中,如果多个线程互相等待对方释放资源,可能会形成死锁,导致JVM无法继续执行。使用`jstack`命令可以分析线程...
当 JVM 发生致命错误导致崩溃时,会生成一个 hs_err_pid_xxx.log 这样的文件,该文件包含了导致 JVM Crash 的重要信息,我们可以通过分析该文件定位到导致 JVM Crash 的原因,从而修复保证系统稳定。 默认情况下,...
- **频繁FullGC的解决**:调整年轻代和年老代的比例,减少对象的晋升速度。 - **OutOfMemory处理**:分析堆转储文件,找出内存泄漏的原因。 - **日志分析**:使用VisualVM等工具分析垃圾回收日志。 **1.1.7 参考...
###### 1.1.1 Crash Analysis Tools (崩溃分析工具) - **功能**:这些工具主要用于在应用程序崩溃时获取有关崩溃原因的信息。 - **应用场景**:当Java应用程序出现异常终止时,可以通过这些工具来收集系统状态数据,...