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

  • bombjack2991

    bombjack2991

    29 HAZİRAN 2008
  • PCDIY

    PCDIY

    16 AĞUSTOS 2013
  • taliajoy18

    taliajoy18

    12 Temmuz 2011