172226325 发表于 2014-4-26 19:02:42

Samples、懂么 发表于 2014-4-29 19:44:15

所谓的Hash算法就是它有一个Hash码,根据Hash码定位数据,但是会存在一个问题,就是不能修改参与Hash码计算的成员变量的值,否则Hash值改变,你再想remove之前的那个对象的时候因为Hash的改变而无法找到原来的对象进行删除,而你认为它已经删除了的话,那么就会产生内存泄露的问题,下面详细解说:首先有一个对象obj它的Hash码为180,有2个变量num1和num2都参与Hash计算,当然这只是假设,假如我们内存中a内存存放Hash码为1-100之前的对象,b内存存放Hash码为101-200之间的对象,那么此时obj就会存放在b内存中,此时我们改变num1的值,那么此时的Hash码是不是就变了呢,假设变成了80,那么此时的Obj就会从b内存挪到a内存中,此时b内存中已经没有了obj对象了,此时如果你想remove掉obj的话,你就删不掉了,因为它的Hash码已经改变了,不在原来的内存中了,但是它还是存放在内存中的,像这样的话,越积越多,内存就会被占满,导致内存泄露的问题,这是程序应该注意的地方,如果哪天你的程序运行运行着就挂掉了,自己想原因去吧!另外我的QQ群: 160590699,加群记得注明来源[从哪里得知此群的]{:5_109:}最后希望大家来交流,还有可能推荐就业机会哦,抓住机遇,成就上人!你就会不一样,谢谢{:5_95:}

172226325 发表于 2014-4-30 12:11:22

Kayllen 发表于 2014-5-14 22:18:31

学习了!!!
页: [1]
查看完整版本: java中hash的理解