在对一个应用做压力的时候,不定时发生jvm crash,查看hs_error.log
内容摘要如下:
Current thread (0x0000000051f8f800): GCTaskThread [stack: 0x00000000413c2000,0x00000000414c3000] [id=15399]
Heap
PSYoungGen total 348288K, used 347520K [0x00002aaae0cb0000, 0x00002aaaf6200000, 0x00002aaaf6200000)
eden space 347072K, 100% used [0x00002aaae0cb0000,0x00002aaaf5fa0000,0x00002aaaf5fa0000)
from space 1216K, 36% used [0x00002aaaf5fa0000,0x00002aaaf6010000,0x00002aaaf60d0000)
to space 1152K, 50% used [0x00002aaaf60e0000,0x00002aaaf6170000,0x00002aaaf6200000)
PSOldGen total 699072K, used 324379K [0x00002aaab6200000, 0x00002aaae0cb0000, 0x00002aaae0cb0000)
object space 699072K, 46% used [0x00002aaab6200000,0x00002aaac9ec6f40,0x00002aaae0cb0000)
PSPermGen total 65536K, used 34650K [0x00002aaaae200000, 0x00002aaab2200000, 0x00002aaab6200000)
object space 65536K, 52% used [0x00002aaaae200000,0x00002aaab03d68d8,0x00002aaab2200000)
看样子似乎是GC的时候crash掉了,heap的状态是eden space 100% used,看样子是在eden区转移到survival区时,由于某些原因crash。
鉴于jvm启动时使用的gc为ParallelGC,于是试着换成串行GC和并行GC,压了18个小时都没有发生crash。
使用的环境是64位 liunx系统,java 1.6.0_18 64bit。
初步怀疑是ParallelGC在并发回收处理eden区内存对象的时候的bug导致,在64位机器和32位机器上都有这个问题。
不知道大家有没有碰到过这个问题?
疑似jdk 6u18 的 bug
http://www.oracle.com/technetwork/java/javase/6u18-142093.html
#
Card-Marking Optimization Issue
#
A flaw in the implementation of a card-marking performance optimization in the JVM can cause heap corruption under some circumstances. This issue affects the CMS garbage collector prior to 6u18, and the CMS, G1 and Parallel Garbage Collectors in 6u18. The serial garbage collector is not affected. Applications most likely to be affected by this issue are those that allocate very large objects which would not normally fit in Eden, or those that make extensive use of JNI Critical Sections (JNI Get/Release*Critical).
This issue will be fixed in the next Java SE 6 update.
Meanwhile, as a workaround to the issue, users should disable this performance optimization by -XX:-ReduceInitialCardMarks.
分享到:
相关推荐
本篇文章主要介绍了jvm crash的崩溃日志详细分析及注意点。具有很好的参考价值,下面跟着小编一起来看下吧
资源名称:深入理解JVM & G1 GC内容简介:G1 GC提出了不确定性Region,每个空闲Region不是为某个固定年代准备的,它是灵活的,需求驱动的,所以G1 GC代表了先进性。《深入理解JVM & G1 GC》主要为学习Java语言的...
NULL 博文链接:https://myspace1916.iteye.com/blog/1441465
NULL 博文链接:https://lovewen-2004.iteye.com/blog/2427798
jvm配置参数详解,以及Java gc详解
深入理解JVM &G1; GC内部结构,年轻代,老年代,元空间等分布情况
JVM与GC调优课程视频 〖课程介绍〗: JVM与GC调优课程视频 〖课程目录〗: 1.笔记/ ├── 第1篇-字节码篇.png?x-oss-process=style/pnp8 ├── 第2篇-类的加载篇.png?x-oss-process=style/pnp8 ├── 第3篇-运行时...
最新的G1学习资料,JVM&g1gc;带书签,完整版本,好书。
JVM_GC调优
深入jvm垃圾回收 调优细节。
G1 GC提出了不确定性Region,每个空闲Region不是为某个固定年代准备的,它是灵活的,需求驱动的,所以G1 GC代表了先进性。本书主要为学习Java语言的学生、初级程序员提供GC的使用参考建议及经验,着重介绍了G1 GC ...
描述了JVM的常用GC算法、GC策略和常用的垃圾回收器,适用于JDK1.7。
JVM调优,GC算法汇总,面试必问,早点准备,很好的资料!
GC:Gabage Collection,指JVM堆内存区域的垃圾回收 Minor GC:年轻代垃圾回收,所有的Majar GC都会触发进程暂停,只是这个实际很短 Major GC:也叫Full GC,年老代垃圾回收 年轻代和年老代的GC策略是不...
本文档可以作为学习JVM GC的工具书所使用,对于想深入学习JVM GC原理的同学,这一本书就足够了。因为本文档是作者花费数月时间,查阅GC相关的国内外众多资料并加以思路清晰的条目化而形成。因为篇幅所限,可能有部分...
jvmgc过程介绍(jpg)
JVM堆相关知识 为什么先说JVM堆? JVM的堆是Java对象的活动空间,程序中的类的对象从中分配空间,其存储着正在...这些对象的建立方式就是那些new一类的操作,当对象无用后,是GC来负责这个无用的对象(地球人都知道)。
此文档是本人在公司做技术分享,个人做的ppt。如果有同学需要做jvm和gc技术演讲得,可以参考此文档。
JVM、GC详解及调优,资料很详细,清楚,仔细阅读
JVM_GC_-调优总结