A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 秦驰 黑马帝   /  2011-7-17 09:57  /  4099 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

java中存在内存泄漏吗

评分

参与人数 1技术分 +1 收起 理由
admin + 1 讨论过的问题,不要重复讨论

查看全部评分

5 个回复

倒序浏览
黑马网友  发表于 2011-7-17 10:44:57
沙发
当然存在内存泄漏了。。
java中的内存泄漏 就是 一些对象是可达的,存在通路可以与其相连
再有一种对象 我们创建了 却没有用它。
这样的对象都是Java中的内存泄漏

java垃圾收集机 不会回收的。


还有张老师讲—IO输入与输出中 有讲到,我们定义产生系统资源,必须自己调用close方法关闭。
java自己是不会回收的。
jvm只释放那些可被释放的存储器空间。就是内存空间。
回复 使用道具 举报
当然存在内存泄漏咯。。
那个小列子说说
Collection collections = new HashSet();
                Person p1 = new Person (3,3);
                Person p2 = new Person (5,5);
                Person p3 = new Person (3,3);       

                collections.add(p1);
                collections.add(p2);
                collections.add(p3);
                collections.add(p1);       
               
                p1.id = 7;               
                collections.remove(p1);
               
                System.out.println(collections.size());
输出 2
        当一个对象被存储进HashSet集合中以后,就不能修改这个对象中的那些参与计算哈希值的字段。否则,对象修改后的哈希值就会改变在这种情况下,即使在contains方法使用该对象的当前引用作为的参数去HashSet集合中检索对象,也将返回找不到对象的结果,也无法单独删除当前对象,从而造成内存溢出。
[ 本帖最后由 廖乃波 于 2011-07-17  11:14 编辑 ]

评分

参与人数 1技术分 +3 收起 理由
admin + 3 很好,你引出了hash操作时要小心的问题

查看全部评分

回复 使用道具 举报
黑马网友  发表于 2011-7-18 10:57:47
板凳
纯在啊!老张视频里边高新技术的有关hashcode那部分讲过!可以看看...
那里是因为hashcode值改变了,调用remove方法没有移除原来的对象,而勿认为移除。从而导致内存泄漏,长期以往,直到溢出

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
黑马网友  发表于 2011-7-18 17:16:57
报纸

jdk6.0中的动态编译和运行问题

最近看了一些jdk1.6的新特性,关于动态编译和运行一直都搞不明白。
不知哪位仁兄研究过,最好附一个简单的实例代码.

评分

参与人数 1技术分 +1 收起 理由
admin + 1 不懂就问,必须的!

查看全部评分

回复 使用道具 举报
黑马网友  发表于 2011-7-18 17:17:53
地板
呀!! 发错了、、、、、、
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马