標籤: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記憶體流失