当前位置: 首页 > Java > 正文

应用在发布的过程中突然crash了几台

1 星2 星3 星4 星5 星 (1 次投票, 评分: 5.00, 总分: 5)
Loading ... Loading ...
baidu_share

解决过程:
1、应用crash后hs_err*.log以及core.[pid]文件都没生成;

2、先打开core dump;

3、crash后gdb core dump看:

1
2
3
4
(gdb) bt
#0  0x00002ba466f82971 in ?? () from /opt/jdk-1.6.0_26/jre/lib/amd64/server/libjvm.so
#1  0x00002aab78a7e20d in Java_java_net_SocketOutputStream_socketWrite0 ()
   from /opt/jdk-1.6.0_26/jre/lib/amd64/libnet.so

4、看到上面的core dump完全木有头绪,后来@rednaxelafx 介入处理,才知道原来jstack是可以跟core dump文件提取出当时java程序的状况的;

5、jstack出来一看,发现程序里有个地方无限递归…so…

总结:
接着又进一步分析了为什么没有生成hs_err*.log,是因为从jdk 5.0以后的版本,hs_err*.log就是在crash的那个线程来生成,而这个案例中crash时的那个线程无限递归,而且正在native栈上,栈空间被消耗光了,所以hs_err*.log文件就没生成出来。

本文固定链接: http://www.chepoo.com/application-release-crash.html | IT技术精华网

应用在发布的过程中突然crash了几台:等您坐沙发呢!

发表评论