SORU
30 Aralık 2010, PERŞEMBE


Bir şekilde Tomcat undeployment bellek sızıntıları önlemek için var mı?

Hiç test eden biri için bu soru "sızıntı" Tomcat manager düğme ve bunun gibi bazı sonuçları var:

Aşağıdaki web uygulamaları durdurulmuş () yeniden, undeployed, ama önceki çalışmalarını kendi sınıfları hala bellekte, böylece bir bellek sızıntısı (onaylamak için bir profiler kullanın) neden yüklenir:
/- uygulama-adı sızdıran

Bu "boşluk" hata sık sık redeployments. Perma Gen ile ilgisi var sanıyorum

Ben dağıtırken jconsole içinde gördüklerim dolu derslerimi 5k üzere 2k gider. Sonra bir undeployment onları geri 2k aşağı düşmesi gerektiğini düşünürdüm ama 5k kalıyorlar.

Ayrıca aşağıdaki JVM seçenekleri kullanarak denedim:

-XX: CMSClassUnloadingEnabled -XX: UseConcMarkSweepGC -XX: CMSPermGenSweepingEnabled

Perma Gen alan ama beklediğim gibi ve sınıfı sayıları atmadın değil kullanılan miktar ÇOK küçük çukurlar gördüm.

Yani bir şekilde Tomcat yapılandırma veya uygulama daha iyi bir undeployment sıkmak için tasarım. Ya da bazı büyük hata ayıklama oturumları sonra sunucu yeniden mi kaldık şimdi?

Sürüm çıkış Tomcat:

Sunucu sürümü: Apache Tomcat/6.0.29
Sunucu inşa: 19 Temmuz 2010 1458
Sunucu numarası: 6.0.0.29
İşletim sistemi Adı: Windows 7
OS Sürümü: 6.1
Mimari: 86
JVM Sürümü: 1.6.0_18-b07
JVM Satıcı: Sun Microsystems'ın Inc.

Güncelleme:

Celias' cevabı biraz daha araştırma yapmaya karar verdim ve benim uygulama için suçlu CXF, Bahar ve JAXB sayesinde karar verdim sanırım. teşekkürler

Java bir uygulama profili için nasıl öğrendim sonra, Tomcat de profiler işaret ettim ve bazı yığın döker ve fotoğraf nesneler ve sınıflar gibi hafızasında olduğunu merak aldı. Benim XML şema (wsdl2java) CXF/JAXB oluşturulan derslerinde kullanılan numaralandırma bazıları bir undeployment sonra kalan olduğunu keşfettim. Yığın tuvaletimi göre nesneleri bir Haritaya bağlanmış gibi görünüyor. Yasal Uyarı: hala ve bir nesnenin Ara ağaç profil izleme Java zor olabilir. biraz yeşil kabul ediyorum

Hatta servis çağırmak istemedim bu söz, sadece o zaman undeployed gönderdim. Yansıma yoluyla yüklenmesi için kendilerini ortaya çıktı nesneler dağıtım: bir Bahar başlattı. Bahar CXF bir hizmet kurmak için kongreyi takip inanıyorum. Eğer bu CXF, JAXB, ya da yansıma hatası İlkbahar/100% emin değilim.

Söz konusu uygulama bir web hizmeti İlkbahar/CXF kullanarak ve XML oldukça karmaşık bir şema (NIEM bir uzantısı) olur. bir yan not olarak:

CEVAP
30 Aralık 2010, PERŞEMBE


Eğer emin olmak istiyorsanız aşağıdakileri yapın:

  • Web uygulamanızın web kap paylaşılan kitaplıkları herhangi bir java sınıfları kullanmak olmadığından emin olun. Eğer herhangi bir paylaşılan kitaplıkları varsa, o kütüphanelerde nesneleri güçlü referansları var emin olun
  • Statik değişkenler, özellikle, Ayarlar, vb karma tablo gibi java nesneleri kullanmaktan kaçının. Eğer gerekiyorsa, Kaldır haritaları ile nesneleri serbest bırakmak için çağrı emin olun, listeler...

Burada da ThreadLocal bir kişi ve - http://blog.arendsen.net/index.php/2005/02/22/threadlocals-and-memory-leaks-revisited/ MemoryLeaks

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • BuzzFeedVideo

    BuzzFeedVide

    10 AĞUSTOS 2011
  • Jesse Pimenta

    Jesse Piment

    5 EKİM 2011
  • Rugiagialia

    Rugiagialia

    1 Ocak 2008