Doğru yoldayız. Eğer eksik olan tek şey çöp kavramdır . tahsilat programı yapar infact sonsuz Tamsayı nesneleri oluşturmak ancak 1 tekrarlanmasından sonra önceki yineleme oluşturulan nesne GC için uygun hale gelir
bu düşünün:.
Integer i;
i = new Integer(); // 1. create new object and make reference variable i refer to it.
i = new Integer(); // 2. create another object and make reference variable i refer to it...there is no way to get to the object created in step1 so obj in step 1 is eligible for GC.
OutOfMemoryError'ı görmek istiyorsanız, bir şekilde sonsuz döngüde oluşturulan nesnelere ulaşmanın bir yolu olduğundan emin olmalısınız. Tamsayı nesneleri sonsuz önceki gibi oluşturulur Bu programda
class Test {
public static void main(String...args) {
Vector v = new Vector(); // create a new vector.
while(true) {
v.addElement(new Integer(1)); // create a new Integer and add it to vector.
}
}
}
ama şimdi bu yüzden onlara almanın bir yolu olduğundan emin olun bir vektör ekleyebilir ve onlar GC uygun olmazlar: Yani böyle bir şey yapabilirsiniz .
+1 Ama bir Listeyi kullanıyorum çünkü Vector eski şapkalı (senkronize/Koleksiyon değil vb.) –
@Brian ayrıntılı bilgi verebilir miydi? Vektör bir Liste ve bir Koleksiyon. –
Üzgünüm - benim hatam Koleksiyon/Liste iş. Vektörün işlemleri senkronize edilir. Tamsayı kurucu için argümanı eksik olan http://stackoverflow.com/questions/1792134/a-colleague-said-dont-use-java-util-vector-anymore-why-not –