SORU
16 Ocak 2009, Cuma


Java null atama nesneleri çöp toplama etkiliyor?

Java boş kullanılmayan bir nesne atama ölçülebilir bir şekilde çöp toplama ve bir yöntemdir.

Benim deneyim ile Java (C#) öğretti bana sık sık karşı sezgisel çalışın ve zekası sanal makine ya da JİT derleyici, ama gördüm ortak çalışanlar bu yöntemi kullanın ve ben merak ediyorum eğer bu iyi bir uygulama almak ya da bir voodoo programlama batıl inançlar?

CEVAP
16 Ocak 2009, Cuma


Genellikle, hayır.

Ama her şey gibi, bağlıdır. Java GC bu gün ÇOK iyi ve her şey çok kısa bir süre sonra artık ulaşılamaz sonra temizlenmelidir. Bu sınıfın bir örneğini artık alanlar için başvurulan yerel değişkenler için bir yöntem ayrıldıktan hemen sonra, ve.

Sadece açıkça aksi takdirde başvurulan kalacaktır biliyorsanız null gerekiyor. Örneğin bir dizi etrafında tutulur. Artık gerektiğinde dizisi, tek tek elemanları boş isteyebilirsiniz.

Örneğin, bu ArrayList kodu:

public E remove(int index) {
    RangeCheck(index);

    modCount  ;
    E oldValue = (E) elementData[index];

    int numMoved = size - index - 1;
    if (numMoved > 0)
         System.arraycopy(elementData, index 1, elementData, index,
		     numMoved);
    elementData[--size] = null; // Let gc do its work

    return oldValue;
}

Ayrıca, açıkça bir nesne nulling daha önce sadece kapsam dışına doğal olarak başvuru kaldığı sürece giderse daha toplanacak bir nesne neden olmaz.

Her ikisi de:

void foo() {
   Object o = new Object();
   /// do stuff with o
}

ve:

void foo() {
   Object o = new Object();
   /// do stuff with o
   o = null;
}

İşlevsel olarak eşdeğerdir.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • esnathesinger

    esnathesinge

    6 NİSAN 2009
  • GoldgenieOfficial

    GoldgenieOff

    23 Temmuz 2009
  • RawBrahs

    RawBrahs

    28 Aralık 2010