OutOfMemory hataları için varsayılan davranış

WebSphere® Application Server , desteklenen işletim sistemlerindeki IBM® Java™ 6 R26 ve sonraki sürümlerini destekler. Varsayılan davranış değiştirildi.

Varsayılan olarak, IBM Java 5 ve sonraki bir yayın düzeyiyle, Java işleminin geçerlilik süresi için ilk dört OOM hatası, PHD biçimli bir yığın bellek dökümü, bir Java döküm dosyası (javacore) ve snap döküm dosyası üretir. Varsayılan olarak, IBM Java 6 R26 ve sonraki bir yayın düzeyiyle bir Java işleminin ömrü boyunca ilk OOM, PHD biçimli bir öbek dökümü, bir Java döküm dosyası, bir snap döküm dosyası ve Linux®, AIX®ve IBM i ' de işletim sistemi döküm çekirdeği dosyası üretir.Windows(bir javacore ile karıştırılmasın), Windows işletim sistemlerinde tam bellek içeren kullanıcı kipi minidump ve z/OS®üzerinde SYSTDUMP. İkinci, üçüncü ve dördüncü OOM hataları yalnızca PHD olarak biçimlendirilmiş bir yığın bellek dökümü ve bir Java döküm dosyası üretir. Bu nedenle, varsayılan davranıştaki değişiklik, ilk OOM hatasında ek bir sistem dökümü olur.

Sistem dökümü, PHD yığın dökümünün üst kümesidir. Sistem dökümü, bellek içerikleri (dizgiler, primler, değişken adları, vb.), iş parçacığı ve çerçeve yerel bilgilerini, bazı yerel bellek bilgilerini ve daha fazlasını içerir. Ek bilgi için https://publib.boulder.ibm.com/httpserv/cookbook/Major_Tools-Eclipse_Memory_Analyzer_Tool.htmladresine gidin. Bu eklenen bilgiler, daha büyük bir sorun sınıfını çözebilir, çalışmakta olan bir JVM ' ye ilişkin daha genel bir kavrayış sağlayabilir ve sonuçta bir sorunu çözmek için gereken süreyi kısaltabilir. IBM Java 5 R12 ya da öncesi ve IBM Java 6 R9 ya da önceki sürümlerde, bir sistem dökümünün jextract aracı kullanılarak işleme sonrası olması gerekir. Ancak, son IBM Java sürümleriyle birlikte, bu yeni OOM davranışı ile birlikte gönderilen bir sistem dökümü de dahil olmak üzere, bir sistem dökümü, OOM ' ler (PHD yığın dökümü gibi) için herhangi bir art işleme olmaksızın, Memory Analyzer Aracı gibi DTFJ yetenekli bir araç tarafından doğrudan yüklenebilir. Ancak, çökmeler için, jextract 'in yine de kullanılması gerekir.

Varsayılan yapılanış, -Xdump:what genel JVM bağımsız değişkeniyle gözlemlenebilir. For example, running $WAS/java/bin/java -version -Xdump:what produces the following output (some output removed). Aralık seçeneğini belirli bir şekilde not edin.
# java -version -Xdump:what
Registered dump agents
...
-Xdump:system:
    events=systhrow,
    filter=java/lang/OutOfMemoryError,
    label=... core.&Y&m&d.&H% M% S.% pid.% seq.dmp,
    range=1..1,
    priority=999,
    request=exclusive+compact+prepwalk
...
-Xdump:heap:
    events=systhrow,
    filter=java/lang/OutOfMemoryError,
    label=... heapdump.% Y% m% d.% H% M% S.% pid.% seq.phd,
    range=1..4,
    priority=500,
    request=exclusive+compact+prepwalk,
    opts=PHD
...
-Xdump:java:
    events=systhrow,
    filter=java/lang/OutOfMemoryError,
    label=... javacore.% Y% m% d.% H% M% S.% pid.% seq.txt,
    range=1..4,
    priority=400,
    request=exclusive+preempt
...
-Xdump:snap:
    events=systhrow,
    filter=java/lang/OutOfMemoryError,
    label=... Snap.% Y% m% d.% H% M% S.% pid.% seq.trc,
    range=1..4,
    priority=300,
    request=serial
Not: Bu örnekteki metnin uygun olmayan dönüştürmelerini önlemek için her bir% karakterinden sonra bu örneğe boş bir boşluk eklenmişti.
Bu yapılandırma,-Xdump genel JVM bağımsız değişkenlerikullanılarak değiştirilebilir:
  • OOM ' deki eski davranışa geri dönmek için şunu kullanın:
    -Xdump:system:none -Xdump:system:events=gpf+abort+traceassert+corruptcache
  • OOM ' de PHD yığın dökümlerini kaldırmak için şunu kullanın:
    -Xdump:heap:none
  • OOM 'de PHD öbek dökümlerini kaldırmak ve yalnızca ilk OOM' un değil, ilk dördünde sistem dökümlerini almak için:
    -Xdump:heap:none 
    -Xdump:system:none 
    -Xdump:system:events=gpf+abort+traceassert+corruptcache 
    -Xdump:system:events=systhrow,filter=java/lang/OutOfMemoryError,range=1..4,request=exclusive+compact+prepwalk
System dumps are written to the location specified by the file parameter in -Xdump (see the previous label attribute in -Xdump:what). Bunu, yeterli alanı olan özel olarak ayrılmış bir bölüme değiştirmelisiniz. Örneğin:
-Xdump:system:file=/var/dumps/core.% Y% m% d.% H% M% S.% pid.% seq.dmp
Not: Bu örnekteki metnin uygun olmayan dönüştürmelerini önlemek için her bir% karakterinden sonra bu örneğe boş bir boşluk eklenmişti.

You might also consider using the -Xdiagnosticscollector generic JVM argument, which will print a warning to native_stderr.log if the JVM detects that ulimits are set incorrectly on startup.