2009-07-17 22 views
8

Müşteri kurulumlarımızdan birinde, aynı istisna dışında binlerce oluşum gerçekleştirdik. Çok iyi kaydedilmiş yığınlamalardan (9332) sonra istisnaın durumu hala kaydedilir, ancak stacktrace olmadan. Java sürecini yeniden başlattıktan sonra, aynı şey: Bu sefer 17858 stacktraces ve sonra sadece istisna olayının kendisi vardı. Bir log4j özelliği veya hata da benzer bir soru here, ancak hiçbir cevap yokturNeden log4j, aynı istisnanın (çok fazla) tekrarından sonra yığın izlemeyi devre dışı bırakır?

...

mi? (İlkine inanıyorum çünkü gerçekten apache adamların yaptığı gibi.)

Herhangi bir fikrin var mı?

cevap

21

Java 5 veya daha iyisini mi kullanıyorsunuz?

Sonra görüyoruz

:

VM şimdilik doğru yığın geriye dönük izleme sağlayan sunucunun içinde derleyici tüm "soğuk" Yerleşik istisnalar. Performans amacıyla, böyle bir istisna birkaç kez atıldığında, yöntem yeniden derlenebilir. Yeniden derleme sonrasında derleyici, yığın izi sağlamayan önceden tanımlanmış istisnalar kullanarak daha hızlı bir taktik seçebilir. Java 5 release notes ait -XX:-OmitStackTraceInFastThrow

Nezaket: Tamamen preallocation'u istisnalar kullanımını devre dışı bırakmak için, bu yeni bayrağı kullanın.

+0

Teşekkürler. Bu doğru cevap gibi geliyor ve ben bunu iki kez kontrol edip doğru olanı kabul ediyorum. –

+0

Sürüm notlarına artık erişilemiyor, bulduğum son arşivlenmiş çekim [2012-06-27] arasındadır (http://web.archive.org/web/20120627040457/http://java.sun.com/j2se /1.5.0/relnotes.html). Orijinal kaynağı kontrol etmek istesem de, ilgili maddenin teklifi tamamlandı. – vilpan

1

En azından yığın izleri gerçekten özdeşse, bana bir özellik gibi geliyor. Neden daha fazla bilgi almadan günlüklerinizi daha büyük (ve dolayısıyla arama yapmak) zorlaştırmak istersiniz? Bu özelliğin yapılandırılabilirliğini kontrol eder ...

DÜZENLEME: log4j koduna bir göz attım ve bunun bir izi yok. Bu, Robert'ın cevabının doğru olduğunu kuvvetle önerir. Güzel VM özelliği IMO :)

+0

Cevabınız için teşekkürler. Günlük dosyalarımı büyük yapmak istemiyorum (ve bu özellikten hoşlanıyorum - bir hata olsa bile ...). Sorun şu ki, ilk önce bu günlük girişlerini yığın izini almadan gördüm (ve başkalarının da olabileceğini düşünmüyordu) ki bu da kodumdaki hatayı bulmaya çalışırken çok yardımcı olmadı. –

İlgili konular