jvm crash问题分析处理
运维找过来了,说是DR系统JBOSS进程没了。
查看JBOSS日志和业务日志,当时并没有任何请求访问和任务在执行。
内存、cpu都不高,但是IO比较高。百思不得其姐。
无奈让运维把JBOSS整体打包拿下来,暴力破解。发现hs_err_pidxxxx.log,时间正好匹配。这是JVM崩溃的时候产生的错误日志。
由此可以判断当时发生了JVM crash。
查看文件内容:

看到当前线程是GCTaskThread,初步判断在执行GC的时候发生了crash,代码段在0x645c0b,函数是instanceKlass::oop_follow_content。
查阅资料,可能的原因是使用的压缩指针产生的错误地址引用。
尝试设置禁止压缩指针:
-XX:-UseCompressedOops
禁止使用压缩命令来压缩指针引用。压缩指针是默认开启的,如果使用压缩命令压缩指针,可以在JVM内存小于32G时做到内存压缩,即在64位机器上做到内存指针对齐只占用32位而不是64位。这样对于小于32G的JVM有非常高的性能提升。该参数只在64位JVM有效。
OK。
参考资料:
https://blog.csdn.net/raintungli/article/details/7642575
https://blog.csdn.net/raintungli/article/details/77790829
日志文件:hs_err_pid10581.rar

浙公网安备 33010602011771号