鱼C论坛

 找回密码
 立即注册
查看: 4108|回复: 3

[技术交流] java中hash的理解

[复制链接]
头像被屏蔽
发表于 2014-4-26 19:02:42 | 显示全部楼层 |阅读模式
提示: 作者被禁止或删除 内容自动屏蔽
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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,加群记得注明来源[从哪里得知此群的]最后希望大家来交流,还有可能推荐就业机会哦,抓住机遇,成就上人!你就会不一样,谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

头像被屏蔽
 楼主| 发表于 2014-4-30 12:11:22 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-5-14 22:18:31 | 显示全部楼层
学习了!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-15 00:48

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表