解决一个 Websphere 上导致 JVM 崩溃的 bug

jacklondon 2006-09-12 11:46:11
解决一个 Websphere 上导致 JVM 崩溃的 bug
来自 http://blog.csdn.net/jacklondon
最近在项目中解决了一个很奇怪的 Bug.
项目中使用 IBM Websphere 5.0.2.7, JDK 1.3.1, 每天都有一次服务器 JVM 崩溃,非常奇怪。
同样的代码,同样的数据库数据,在开发环境下面就很好。
经过两天的调试和增加大量的 log (使用 log4j),逐步逼近问题的根源。为了防止 JVM 崩溃的时候, log4j 还有 log 放在缓冲内存中没有写到文件,还花了很多时间才搞定。
结果发现是以下代码导致,变量名我换掉了,这里只是示例:
addToList(new long[] { long1, long2, long3, long4}, contList);

这是一个数组初始化代码,编译无误,应该是符合 JDK 1.3 的语法的。执行次数在 10 次左右还没有问题,次数多了就会导致服务器 JVM 崩溃。修改成如下格式:
long[] data = new long[4];
data[0] = long1;
data[1] = long2;
data[2] = long3;
data[3] = long4;
addToList(data, contList);

然后问题就解决了。非常莫名其妙的问题。有趣的 bug.
...全文
246 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
dddeee 2007-03-26
  • 打赏
  • 举报
回复
有意思啊
报告给sun?
jacklondon 2006-09-30
  • 打赏
  • 举报
回复
这两种方法应该是一样的,为什么会一种方法死掉,我也不知道。我是通过 log4j 写大量的 log ,逐步定位到哪个函数,再逐步定位到哪一块代码,最后才发现的。
strawbingo 2006-09-30
  • 打赏
  • 举报
回复
addToList是你自己的方法么
我觉得两种方法结果应该一样啊,期待解释
NsGFr 2006-09-30
  • 打赏
  • 举报
回复
我想知道你是通过什么样的途径找到“addToList(new long[] { long1, long2, long3, long4}, contList);“他就是导致jvm崩溃的主谋呢?
jacklondon 2006-09-30
  • 打赏
  • 举报
回复
怎么没有人说一声,“有意思啊”?

62,616

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧