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

Java内存泄漏

时间:2016-11-09 22:28:52      阅读:261      评论:0      收藏:0      [点我收藏+]

标签:static   void   import   shc   方法   create   移除   集合类   after   

1、什么是内存泄漏

当某些对象不再被应用程序所使用,但是由于仍然被引用而导致垃圾收集器不能释放(Remove,移除)

2、引起内存泄漏的原因

长生命周期的对象持有短生命周期对象的引用就很可能发生内存泄露(老年代引用新生代)

2.1 当集合里面的对象属性被修改后,由于hashcode改变当再调用remove()方法时不起作用

 1 import java.util.HashSet;
 2 import java.util.Set;
 3 
 4 /**
 5  * Created by xiaoxiao7 on 2016/11/9.
 6  */
 7 public class Test01 {
 8 
 9     public static void main(String[] args) {
10         Set<String> set = new HashSet<String>();
11         String str1 = new String("aaa");
12         String str2 = new String("bbb");
13         String str3 = new String("ccc");
14         set.add(str1);
15         set.add(str2);
16         set.add(str3);
17         System.out.println("Before: " + set.size());
18         str3 = "ddd";
19         set.remove(str3);
20         set.add(str3);
21         System.out.println("After: " + set.size());
22         for (String str : set) {
23             System.out.println(str);
24         }
25     }
26 }

2.2 静态集合类引起内存泄漏

 1 import java.util.HashSet;
 2 import java.util.Set;
 3 import java.util.Vector;
 4 
 5 /**
 6  * Created by xiaoxiao7 on 2016/11/9.
 7  */
 8 public class Test01 {
 9 
10     static Vector v = new Vector(10);
11     
12     public static void main(String[] args) {
13         for (int i = 1; i<100; i++)
14         {
15             Object o = new Object();
16             v.add(o);
17             o = null;
18         }
19     }
20 }

 

Java内存泄漏

标签:static   void   import   shc   方法   create   移除   集合类   after   

原文地址:http://www.cnblogs.com/xiaoxiao7/p/6048916.html

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