SORU
20 EYLÜL 2009, Pazar


Asansör ve İskele ile PermGen sorunları

Standart Asansör platformu (maven ve iskele) üzerinde geliştiriyorum. Sürekli (gün her çift bir kez) bu alıyorum:

Exception in thread "7048009@qtp-3179125-12" java.lang.OutOfMemoryError: PermGen space
2009-09-15 19:41:38.629::WARN:  handle failed
java.lang.OutOfMemoryError: PermGen space

Bu dev benim ortamda. Sunucu yeniden devam edebilirim, çünkü bu bir sorun değil. Dağıtım gerçek bir sorun değil yani bu sorunları yaşıyorum. Sadece merak ediyorum.

JVM hakkında çok şey bilmiyorum. Kalıcı nesil bellek sınıfları ve staj dizeleri gibi şeyler için olduğunu düşünerek doğru düşünüyorum? Hatırladığım tek şey biraz karışık .NET bellek modeli...

Bu neden oluyor herhangi bir sebebi var mı? Varsayılanları sadece delice düşük? Scala İşlevi nesneleri ve benzer FP şeyler için oluşturmak için yardımcı nesneler ile bir alakası var mı? Ben sanırım yeni yazılmış kod ile İskele (her birkaç dakikada bir yeniden yeniden yükler sınıflar vb. her zaman Ama öyle olsa bile, o cant' birçok olabilir mi? Ve JVM sınıfların büyük bir sayı ile başa çıkmak için mümkün olması gerekmez mi?

Şerefe

Joe

CEVAP
20 EYLÜL 2009, Pazar


this post:

Bu durum, basit bir nedenden dolayı oluştu :
permgenspacenerede sınıf özellikleri, yöntemleri, alanları, ek açıklamalar, ve aynı zamanda statik değişkenler gibi, vb. Java VM saklanır, ama bu alanı çöp toplayıcı tarafından temizlenmiş olmamak için ayrım vardır. Eğer bir web-ya dersler çok kullanıyorsa oluşturur (sınıflar dinamik nesiller düşünüyorum), şans bu sorun bir araya geldi. İşte beni bu durum kurtulmak yardımcı bazı çözümler :

  • -XX: CMSClassUnloadingEnabled : Bu ayar permgenspace çöp toplama sağlar
  • -XX: CMSPermGenSweepingEnabled : çöp hafızasından bile sınıfları kaldırmak için toplayıcı sağlar
  • -XX:PermSize=64M -XX:MaxPermSize=128M : yükseltir bellek miktarını permgenspace için ayrılmış

Olabilir bu yardımcı olabilir.

Edit Temmuz 2012 (neredeyse 3 yıl sonra):

Ondra Žižka yorum (ve yukarıdaki cevap güncelledik):

JVM 1.6.0_27 diyor ki: kullanın Lütfen

  • 6* *sınıf boşaltma CMS GC kullanırken etkin Olup olmadığını ()
  • gelecekte CMSPermGenSweepingEnabled yerine

Mroe Hotspot JVM Options - The complete reference tam bakın.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • MikeyMacintosh

    MikeyM

    28 Aralık 2009
  • MysteryGuitarMan

    MysteryGuita

    16 HAZİRAN 2006
  • THELIFEOFPRICE

    THELIFEOFPRI

    16 Mart 2011