2012-06-12 22 views
13

Yığın alanı sorunu yaşıyorum. Programım basit. İki oyuncu vardır (& gönder) "gönder" aktörü saniyede 10000 nesneyi "al" a geçirir ve bu nesneleri yayınlar. Alınan alıcılar konteynerde saklanmakta, ancak konteyner her saniye boşaltılmaktadır. Yani kapsayıcı alanın tükenmesi ihtimali yok. Şimdi 420000 nesneleri sonra tutulması "ioconsole updater sorunu" ile ilgili bir hata diyor. Ve ayrıntılara girdiğimde hata görüyorum İç hata :: Java yığın alanıYığın alanı yetersiz çalışıyor

Yığın boyutunu büyütmeyi denedim. Yığın boyutum 8096m ve maxpermsize değeri 4096

VisualVm kullanarak kodumu izliyorum ve bunun yığın boyu atall değerini aşmadığını fark ediyorum. Problemi çözmek için tamamen boş.

Bazı olası senaryoların bu tür hatalara neden olabileceğini bana bildirin.

cevap

35

IOConsole, programınızın değil bir tutulma sınıfıdır. System.out'a çok yazdırıyor musunuz? Pencere> Tercihler altında "konsol" için arama yapın. Tüm konsol arabellekleri için bir çeşit sınır ayarlayın. Programdan daha az çıktı yazdırmayı deneyin. Belki bunun yerine bir dosyaya giriş yapın.

-Xloggc:/tmp/gc.log -XX:+PrintGCDetails -XX:+PrintGCTimeStamps 
+0

Evet, lagback.xml dosyası tarafından yapıldığı için printf satırlarını bulamadım. Bu dosyadaki durum değiştikçe, günlük çizgileri azaldı ve hata azaldı. Çok teşekkürler .. – Rags

+0

'Sabit Genişlik Konsolunun' işaretini çözdüm ... – KillBill

5

kişinin size GC ne yaptığını bir bellek kullanımı fikrini ve vermek için aşağıdaki JVM args ekleyebilir.

Çözüm:

Sağ Konsolu tıklayın -> Tercihler

sınır konsolu.

3

Bu sorun konsolunda tampon büyüklüğü nedeniyle oluştu:

0

Sorunla karşılaştım ve eclipse'de yığın ve arabellek ayarlarını değiştirerek çözmeye çalıştım. Ancak bunu çözemedim. Sonra programımda bir bellek sızıntısı olduğunu fark ettim ve iplik sayısı zamanla arttı. Hata düzeltildikten sonra sorun çözüldü. Bence bellek sızıntısı bunun en olası sebebi değil ama dikkate alınması gerekiyor.

İlgili konular