2015-05-29 11 views
8

-XX:+HeapDumpOnOutOfMemoryError JVM parametresini biliyorum. Ayrıca -XX:OnOutOfMemoryError="cmd args;cmd args" hakkında da biliyorum ve kill -3 <JVM_PID> bir yığın dökümü isteyecektir.OutOfMemoryError _after_ üzerindeki JVM'yi bir yığın dökümünde nasıl yeniden başlatabilirim?

Soru: nasıl dökümü yapıldıktan sonra ben, OutOfMemoryError üzerine, öncelikle tam bir yığın dökümü ve sonra kuvveti bir yeniden başlatma yapmak (ya da öldürmek) emin olabilirim? En iyi bahse girerim -XX:OnOutOfMemoryError="kill -3 %p;sleep <time-it-takes-to-dump>;kill -9 %p" mu?

+2

örneğin JVM dışarıdan işlem izleme ve buna göre, yeniden başlatmak için daha iyi olmaz unix komut dosyası, monitorying sistemi? jvm bellek yetersizse, kendini yeniden başlatmak için bir komutu güvenilir bir şekilde çalıştırabilmek için ona güvenmek istemem. – vikingsteve

cevap

15
java -XX:+HeapDumpOnOutOfMemoryError -XX:OnOutOfMemoryError="kill -9 %p" TestApp 

JVM ilk yığın dökümü ve sonra OnOutOfMemoryError (proof) komutları çalıştırır. Sadece kapatma istiyorsanız

0

Çalıştırımın çalışma zamanı, kilitlenme sırasında belirli bir hata düzeyini ayarlar. Bu dönüş kodunu kontrol edin ve bu durumda programı tekrar çalıştırın. Belki de senaryoya koymalısın.

Güneş jölesi, oome üzerindeki çöp yığınlarını açmanıza izin verir, belki de openjdk de yapar.

4

aşağıdaki parametrelerden birini kullanabilirsiniz:

  • -XX:+ExitOnOutOfMemoryError
  • -XX:+CrashOnOutOfMemoryError

VM argümanlar Java sürümü 8u92 eklendi, release notes bakın. Bu seçeneği etkinleştirdiğinizde

ExitOnOutOfMemoryError
, JVM dışı bir bellek hatası ilk geçtiği üzerinde çıkar. , bellek hatalarını işlemek yerine JVM'nin bir örneğini yeniden başlatmayı tercih ederseniz kullanılabilir.

CrashOnOutOfMemoryError bu seçenek etkinleştirilirse
, bir dışı belleğe hatası, JVM çöktüğünde ortaya çıkar ve metin ve ikili çarpışma dosyaları üretir zaman.

Geliştirme İsteği: JDK-8138745 (parametre adlandırma yanlış olmasına rağmen JDK-8154713, ExitOnOutOfMemoryError yerine ExitOnOutOfMemory arasında)

İlgili konular