2010-06-04 10 views

cevap

46

Dur.

+6

Suratımda :) – BalusC

+24

Java nesnesi == varoluşsal kriz bir gülümseme getirdi "Ben hala varım kimse başvuran Eğer bana mı?" –

+0

Tüm zayıf bellek parçalarını yalnız bırakın. Onlara başvurmayı bırak. Şimdi :) – schnaader

6

bayt bu diziye tüm içeriği çıkarılması. Çöp toplayıcı geri kalanını halledecek. Java yeni byte [] oluştururken

13

, sen başka bir şey

gibi, bayt dizisi başvuruyor Eğer

myArray = null; 

yapmalıyım

byte[] myArray = new byte[54]; 

gibi bir şey bunu boşaltmak için yapmak

yourArray = myArray; 

Ayrıca, diğer başvuruları null olarak ayarlamanız gerekir,

Java çöp toplama olarak
yourArray = null; 

otomatiktir. JVM, bir program belleğinin artık tüm program tarafından erişilemeyeceğini tespit ederse, JVM hafızayı sizin için boşaltacaktır. null tüm başvuruları ayarlanması

+2

için değişken ayarlamanız gerekmediği anlamına gelir. JVM, hafızayı istediğinde boşaltacaktır. Hemen hemen her java programı için bir ilk sipariş yaklaşımı olarak, bellek hakkında endişelenmeyin, mutlu olun, JVM'ler sizin sırtınızı alır. –

+4

Genel olarak, nesnenin toplanmasına izin vermek için boş değere bir başvuru ayarlamanız gerekmemelidir. Bunu yapmanız gerekiyorsa, uygulama IMHO'nuz ile ilgili ciddi bir sorun olabilir. –

+3

@ Peter: Bağlıdır. Değişkenin, atıfta bulunduğu diziden biraz daha uzun süre yaşayacağını biliyorsanız, bunu açıkça belirlemek mantıklıdır. Bu oldukça nadir olsa da. –

1

o Java'nın otomatik çöp toplama için aday yapacaktır. Bunun gerçekleşmesi için ne kadar zaman alacağından emin olamazsın. Anında hafızayı hemen geri almanız gerekiyorsa hemen System.gc();

Bir aramayı açıkça yapmanız gerekirse, referansları açıkça null olarak ayarlamanız gerekmeyebilir. Referanslar kapsam dışına çıkarsa, otomatik olarak silinir. Bitirilen yürütme yönteminde bildirildikten sonra bir yerel değişken referansı null edilecektir. Bu nedenle, yerel değişkenler genellikle bir uygulama çalışma zamanı boyunca örtülü olarak yayınlanır.

+3

System.gc() belleği hemen geri almaz. Sadece JVM'ye söylüyorsun "Lütfen, eğer böyle hissedersen, belki de işleri temizleyebilirsin." Bu sadece bir öneri. –

+3

System.gc() bir GC zorlamaz. Bu sadece bir öneri. Oda arkadaşınla "dostum, burası bir enkaz, neyin var?" Demesi arasındaki fark gibi. ve annen "BU ANLATIMI YÜKSELTİN!" Çoğu uygulamada, System.gc() sadece oda arkadaşınızdır. –

+0

@Jonathon @Jim Bunun farkında değildim. Javadocs, "Çöp toplayıcısını çalıştırır." Diyerek gc yönteminin çağrılması, Java Virtual Machine'in kullanılmayan nesneleri geri dönüştürmek için harcadıkları çabayı, yeniden kullanılmalarını sağlamak için kullanılmadıklarını hatırlatır.Kontrol, yöntem çağrısından döndüğünde, Java Virtual Makine, tüm atılan nesnelerden alan kazanmak için en iyi çabayı sarf etti. " ve benim arama tecrübemde hemen çalışmaya başladı, ama belki ben yanlış – Alb

İlgili konular