2013-01-15 18 views
5

Bir uygulamada bir permgen hatasını ayıklamaya çalışıyorum. Uygulamayı profillemek için VisualVM çalıştırıyorum ve bellek anlık görüntüsünün bir yığınını aldım.VisualVM - Bir sınıftaki tüm başvuruları bulun

Anlık görüntüyü analiz için VisualVM'e yükledim, şu anda sınıflar listesinde birkaç kez görünen, hepsi 0 örneğiyle, 0 boyutta listelenen birkaç tane görebilirsiniz - bu sınıflardan yalnızca birini bekliyorum (muhtemelen sınıf yükleyicisine bağlı)) - Bu sınıflara hiçbir örnek verilmeden neyin hala devam ettiğini belirlemek için herhangi bir yol var mı? Referansı neyin tuttuğunu analiz etmek için sadece dökümü (.hprof) yükleyebilsem başka bir aracı kullanmaktan mutlu olurum.

Teşekkürler!

+0

Geçmişte bunun için YourKit kullandık. Bir çöplüğü yükleyebilir. Ücretsiz bir değerlendirme lisansı alabilirsiniz. –

cevap

3

Böyle şeyler için MAT kullanıyorum. Büyük yığınlarda bile harika çalışıyor.

+0

Teşekkürler - sadece MAT için başka bir öneri üzerine tökezledi - Eclipse'de de yükledim, böylece bulabildiğim şeyleri görmek için günlükleri yükleyeceğim. – rhinds

16

"MAT kullan" deyişi gerçekten soruya cevap vermiyor!

VisualVM'de yapmak için, Örnekleyicide veya Profilci görünümünde "Yığın Dökümü" etiketli bir düğme (sağ üstte) vardır. Yığın analizcisini açan buna tıklayın. "Sınıflar" sekmesinin altındaki tüm yüklü sınıflar gösterilir. Altta bir arama kutusu var, ilgilendiğiniz sınıf adını yazın, filtrelenmiş görünümde söz konusu sınıfa çift tıklayın.

Bu, örnek görünümünü açar. Sol bölmede bir örneği sağ tıklatın ve nesneyi başvurulan öğeyi bulmak için "En Yakın GC Kökünü Göster" i seçin.

Barney

İlgili konular