黑马程序员技术交流社区

标题: java中存在内存泄漏吗 [打印本页]

作者: 秦驰    时间: 2011-7-17 09:57
标题: java中存在内存泄漏吗
java中存在内存泄漏吗
作者: 匿名    时间: 2011-7-17 10:44
当然存在内存泄漏了。。
java中的内存泄漏 就是 一些对象是可达的,存在通路可以与其相连
再有一种对象 我们创建了 却没有用它。
这样的对象都是Java中的内存泄漏

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


还有张老师讲—IO输入与输出中 有讲到,我们定义产生系统资源,必须自己调用close方法关闭。
java自己是不会回收的。
jvm只释放那些可被释放的存储器空间。就是内存空间。
作者: 廖乃波    时间: 2011-7-17 10:56
当然存在内存泄漏咯。。
那个小列子说说
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 编辑 ]
作者: 匿名    时间: 2011-7-18 10:57
纯在啊!老张视频里边高新技术的有关hashcode那部分讲过!可以看看...
那里是因为hashcode值改变了,调用remove方法没有移除原来的对象,而勿认为移除。从而导致内存泄漏,长期以往,直到溢出
作者: 匿名    时间: 2011-7-18 17:16
标题: jdk6.0中的动态编译和运行问题
最近看了一些jdk1.6的新特性,关于动态编译和运行一直都搞不明白。
不知哪位仁兄研究过,最好附一个简单的实例代码.
作者: 匿名    时间: 2011-7-18 17:17
呀!! 发错了、、、、、、




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2