JVM bayrak CMSClassUnloadingEnabled tam olarak ne yapar?
Benim için hayat beni bul tanımının ne Java VM bayrak CMSClassUnloadingEnabled
aslında, başka bazı çok bulanık üst düzey tanımları gibi "gets rid sizin PermGen sorunları" (which it doesn't, btw).
Sun/Oracle sitesine baktım, ve hatta the options list aslında ne yaptığını söylemiyor.
Bayrak adına dayanarak, CMS Çöp Toplayıcı varsayılan olarak sınıfları kaldırmak olmadığını tahmin ediyorum, ve bu bayrak açar - ama emin olamıyorum.
CEVAP
Dünya üzerinde bak VM standart Oracle/Sun: Sınıflar sonsuza dek. Bir kez yüklü, bu yüzden, artık kimsenin umurunda bile bellekte kalır. Bu genellikle birçok tamamen yok madem hiç sorun değil "Kur" sınıflar (= kur ve bir daha sonra bir kez kullanılır). Yani eğer kimin umurunda 1MB, alırlarsa bile.
Ama son zamanlarda, zamanında sınıfları tanımlayan Groovy gibi dilleri var. Her zaman bir komut dosyası çalıştırdığınızda, bir veya daha fazla yeni sınıflar oluşturulur ve PermGen onlar sonsuza kadar kalmak. Eğer bir sunucu çalıştırıyorsanız, bir bellek sızıntısı var demektir.
CMSClassUnloadingEnabled
etkinleştirirseniz GC PermGen da silip süpürecek, ve artık kullanılan sınıfları kaldırmak.
[DÜZENLE]Ayrıca UseConcMarkSweepGC
(Sam Hasler sayesinde) etkinleştirmeniz gerekir. Bu cevaba bakınız: http://stackoverflow.com/a/3720052/2541
Java nesneleri null olarak ayarlanması...
Donukluk:0 tam olarak aynı etkiye sahi...
AddChildViewController tam olarak ne y...
Ne zaman pozitif bir tablo kullanmak y...
Böyle büyük mükafat 4.2 tercihi "...