Java記憶體流失

來源:互聯網
上載者:User

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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.