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

  • ☆ SUB4SUB CENTER! ☆ spam here

    ☆ SUB4SUB

    22 ŞUBAT 2010
  • Jared Busch

    Jared Busch

    25 Mayıs 2011
  • Jorrit Jongma

    Jorrit Jongm

    17 Ocak 2008