2016-04-22 77 views
6
ile karşılaştırılıyor.

72 GB bellek çalıştıran bir sunucum var, 25G'de paralel GC ve yığın boyutu ile Java 7 kullanıyordum. Ancak Java 8'e geçtikten sonra, belirli bir görev daha yavaş olur. Görev temel olarak bellekte 15 GB civarında bir dosya okuyor ve DB'deki bazı ilgili verileri günceller. İşi bitirmek genellikle yaklaşık bir saat sürer, ancak Java 8'den sonra 1,5 saat olur.Java 8'de Java 8, Java 7

Denedim: 50GB

  1. arttır yığın boyutu => CMS paralel gelen
  2. Değişim GC algoritması yardımcı olmaz, hatta daha yavaş olur (1,8 saat)

Yani ben Bir göz atmaya nereden başlayacağımı bilmiyorum, görevi yürütmek için java kitaplığı hala Java 7'de derlenmiş durumda ancak bu ilgili olup olmadığından emin değilim? Java 7'ye geçtikten sonra, performans hemen geri döndü.

  • XX: + PrintGCDetails XX: + PrintGCTimeStamps -Xloggc: günlükleri/gc.log

ve kullanım

+0

Uygulamanıza karşı bir profil oluşturdunuz mu? Bu dosyayı yüklemek için hangi üçüncü taraf kitaplıklarını kullanıyorsunuz? –

+0

En yeni Java 7? Alt dizeler değiştiğinde uygulama! Performansın nereye gittiğini görmek için karşılaştırmaları karşılaştırmayı deneyin. –

+0

Bu kadar uzun süren herhangi bir şey profilden yararlanır. (Bir dakikadan uzun süren herhangi bir şey, IMHO profilli olmalıdır) –

cevap

2

/karşılaştırmak GC sorunu bulmak için, etkinleştirmek için GC günlüğü iyidir GC günlük dosyalarını GC günlük dosyalarını ayrıştırmak/görselleştirmek. GC günlüğünü toplar ve soruya eklerseniz yararlı olur.

Teoride (ve uygulamada) Java 8, Java 7'den daha hızlıdır. Java'nın verileri DB'ye yazdığından bahsetmiştiniz. Her ikisinin de kaynak tüketimini analiz etmeye değer olabilir, DB'nin kök nedeni olabilir.

+0

Merhaba, bu bayraklara çok teşekkür ederim! –