为了账号安全,请及时绑定邮箱和手机立即绑定

从 Colt OpenLongObjectHashMap 除以零错误

从 Colt OpenLongObjectHashMap 除以零错误

开心每一天1111 2022-05-25 16:00:39
我从 Colt 看到了这个例外OpenLongObjectHashMap:java.lang.ArithmeticException: divide by zero        at cern.colt.map.OpenLongObjectHashMap.indexOfKey(Unknown Source)        at cern.colt.map.OpenLongObjectHashMap.get(Unknown Source)它是不可复制的。这是 indexOfKey:protected int indexOfKey(long key) {    final long tab[] = table;    final byte stat[] = state;    final int length = tab.length;    final int hash = HashFunctions.hash(key) & 0x7FFFFFFF;    int i = hash % length;    int decrement = hash % (length-2); // double hashing, see http://www.eece.unm.edu/faculty/heileman/hash/node4.html    //int decrement = (hash / length) % length;    if (decrement == 0) decrement = 1;    // stop if we find a free slot, or if we find the key itself.    // do skip over removed slots (yes, open addressing is like that...)    while (stat[i] != FREE && (stat[i] == REMOVED || tab[i] != key)) {        i -= decrement;        //hashCollisions++;        if (i<0) i+=length;    }    if (stat[i] == FREE) return -1; // not found    return i; //found, return index where key is contained}因此,唯一使用的除数是length和(length - 2),其中length是table.length,table是一个内部数组。但是,表只初始化为最小大小为 3 的数组(默认值为 277,这是我正在使用的)。整数环绕似乎也不可能。所以这似乎是一个不可能的错误。有任何想法吗?
查看完整描述

1 回答

?
BIG阳

TA贡献1859条经验 获得超6个赞

这原来是正在使用的 IBM JDK JIT 编译器中的 Java 编译器优化错误。

请参阅此错误报告:IJ06000:意外除以零异常

推荐的修复方法是禁用问题方法的 LoopVersioner 优化。


查看完整回答
反对 回复 2022-05-25
  • 1 回答
  • 0 关注
  • 78 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号