MAT

2011-07-27 22 views
8

kullanarak bellek sızıntısını bulma konusunda yardıma ihtiyacım var İki yığın dökümünü karşılaştırmak için MAT kullanıyorum. Her gün bir yığın dökümü alıyorum ve her gün yaklaşık 200 mega büyüyor. Sızıntının java.util.zip ile ilişkili olduğunu düşündüğüm tablodan dolayı ve ayrıca son zamanlarda yeni bir işlem ekledik çünkü fermuarlar ve bir çok dosyayı çözüyoruz. Ben ise egemen açıp için filtrelenmiş Bu noktadaMAT

Heap dump histogram compare

(resme bakın). Inflater. Bu java.util.zip.Inflater büyük bir listesini üretti. Şimdi bunların açık tutulduğunu görmek istiyorum, bu yüzden birini seçtim ve Yolu zayıf ve yumuşak referanslar hariç GC köküne getirdim (resme bakın). Bu kavanoz enflasyon ve benim süreci ile ilgisi ile ilgisi var gibi

GC Root

görünüyor. Bu noktada sıkışıp kaldım ve bazı önerilere ihtiyacım var.

DÜZENLEME 1

Sean ThreadLocals sordu. Hiçbir filtreyle dominator_tree'ye bakarsanız, java.lang.ApplicationShutdownHooks öğesinin yığının% 58 olduğunu görürsünüz. Eğer bu girişlerden bazılarını genişletirsem, ThreadLocalMap içinde göründüğünü görebilirsiniz. Onları neyin buraya koyduğunu nasıl bulabilirim?

enter image description here

DÜZENLEME 2

Sean'ın comment doğru yolda beni koy. Glassfish v 2.0 kullanıyorum ve bir memory leak var. Sürekli olarak yeni LogManager'lar oluşturur ve bunları ApplicationShutdownHooks koleksiyonuna ekler.

ApplicationShutdownHooks'u açmak ve nesneleri koleksiyondan el ile kaldırmak için bu sorunu giderdim.

+0

Tüm örneklerin GC köküne giden yolları böyle mi görünüyor? Bu örnek bir örnek olmayabilir. –

+0

16k örnekleri vardır, bu yüzden bazılarının farklı olması mümkündür. Birkaçına baktım ve aynı şeyleri. Resimlerimin neden gösterilmediğini bilen var mı? – Preston

+0

Onlar benim için iyi gösteriyorlar. –

cevap

0

Sean'ın yorumu beni doğru yola koydu. Glassfish v 2.0 kullanıyorum ve bir bellek sızıntısı var. Sürekli olarak yeni LogManager'lar oluşturur ve bunları ApplicationShutdownHooks koleksiyonuna ekler.

ApplicationShutdownHooks'u açmak ve nesneleri koleksiyondan el ile kaldırmak için bu sorunu giderdim.