码迷,mamicode.com
首页 > 编程语言 > 详细

java内存泄露情况

时间:2014-10-18 12:46:49      阅读:164      评论:0      收藏:0      [点我收藏+]

标签:使用   java   strong   on   as   对象   方法   函数   存储   

重写hashCode的成员变量发生变化,Set中对象无法找到

1、使用对象的hashCode函数来初步确定内存位置,如果该位置没有存储对象,则将此对象存放于此

2、如果hash函数直接计算出的内存地址空间已经有对象存在,则会使用对象的equals判断对象是否相等,如果不相等则顺序查找下一个空闲的内存空间;如果有相同对象存在,则Set中不能存储该重复对象

当一个对象被存储进hashSet集合中以后,就不能修改这个对象中的那些参与hash值计算的字段了,否则,对象修改后的hash值就不同了,这种情况下,即使在contains方法使用该对象的当前引用作为参数去hashSet结合中检索对象的,也将返回找不到对象的结果,这也将导致无法冲hashSet中集合中单独删除当前对象,从而造成内存泄露。所谓内存泄露也就是说有一个对象不被再使用,但它一直占有内存空间,没有被释放。

java内存泄露情况

标签:使用   java   strong   on   as   对象   方法   函数   存储   

原文地址:http://my.oschina.net/freegeek/blog/334881

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!