Java nesneleri null olarak ayarlanması artık bir şey yapar mı?
Bazı eski kitaplara göz atıyordum ve" Peter Hagger tarafından. "Pratik Java bir kopyası bulundu Performans bölümünde, artık gerekmediğinde null
itiraz başvuruları ayarlamak için bir önerisi var.
Java, null
itiraz başvuruları ayarı performans ya da çöp toplama verimliliği artırmak mı? Eğer öyleyse, ne durumda bu bir sorun değil mi? Konteyner sınıfları? Kompozisyon nesne? Anonim iç sınıflar?
Ben kodu bu oldukça sık görüyorum. Bu artık demode programlama danışmanlık ya bu hala işe yarıyor mu?
CEVAP
Başvuru nulling düşünüyordun zaman biraz bağlıdır.
A -^ zinciri bir nesne varsa . B->O zaman ulaşılabilir değil. bir kez C, A, B ve C, çöp toplama için uygun olur (başka bir şey ya da B ya da C dir varsayarak). Gerek yok, hiç gerek açıkça ayarlanmış Kaynaklar A -^ olmuştur . B veya B->Örneğin null C,.
Bu, çoğu zaman ayrı konu gerçekte koleksiyon nesneleri ile uğraşıyoruz nedeniyle meydana gelmez. Genellikle her zaman uygun kaldırma çağırarak, vb listeleri haritalar nesneleri kaldırmayı düşünüyor olmalıyız() yöntemi.
Durumdaeskidenboş başvuruları ayarlamak için birkaç tavsiye özelliklebellek-yoğun bir nesne uzun kapsam partway kapsamı ile kullanılacak durdurdu. Örneğin:
{
BigObject obj = ...
doSomethingWith(obj);
obj = null; <-- explicitly set to null
doSomethingElse();
}
Mantığı burada çünkünhala kapsamı, başvuru açık nulling olmadan, sonra çöp koleksiyon olmaz() doSomethingElseyöntem tamamlar. Ve bu tavsiyemuhtemelen artık tutan modern Jvm'ler: JİT derleyici hangi noktada verilen yerel bir nesne başvurusu artık kullanılmamaktadır iyi çözüm olduğu ortaya çıktı.
Süreli Düz Eski Java nesneleri(POJO) t...
Java - örneğin Nesne null doğru ve yan...
Referans karşılaştırma (==) bazı dizel...
Java null atama nesneleri çöp toplama ...
'kamu, varsayılan olarak korumalı...