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

  • Nightmare2005

    Nightmare200

    14 Ocak 2007
  • PomplamooseMusic

    PomplamooseM

    28 HAZİRAN 2008
  • The Amazing Atheist

    The Amazing

    20 Kasım 2006