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

posted @ 2018-09-21 16:49  havery  阅读(801)  评论(0)    收藏  举报