站内搜索: 请输入搜索关键词

当前页面: 开发资料首页J2SE 专题解决一个 Websphere 上导致 JVM 崩溃的 bug

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

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


解决一个 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.


怎么没有人说一声,“有意思啊”?


我想知道你是通过什么样的途径找到“addToList(new long[] { long1, long2, long3, long4}, contList);“他就是导致jvm崩溃的主谋呢?


addToList是你自己的方法么
我觉得两种方法结果应该一样啊,期待解释


这两种方法应该是一样的,为什么会一种方法死掉,我也不知道。我是通过 log4j 写大量的 log ,逐步定位到哪个函数,再逐步定位到哪一块代码,最后才发现的。


↑返回目录
前一篇: 树结点数据实体不同,如何建造树.
后一篇: 日期格式转化问题,在线等!