SORU
26 Temmuz 2010, PAZARTESİ


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
26 Temmuz 2010, PAZARTESİ


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

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Charles Nesson

    Charles Ness

    27 NİSAN 2006
  • jcortes187

    jcortes187

    24 Mart 2006
  • videoisunrelated

    videoisunrel

    5 Mart 2009