Bu JVM üzerinde bir OutOfMemoryException ortaya çıktığında yığın dökmek mümkün olduğunu biliyorum, ancak jmap veya jconsole gibi araçlarla canlı bir döküm sormak mümkün mü?Linux için ibm-jdk ile canlı bir yığın dökümü yapmanın bir yolu var mı?
cevap
Tamam, sonunda kendime cevap vereceğim: uygulamanın uzak yönetici arayüzü var, bu yüzden com.ibm.jvm.Dump.HeapDump()
yöntemini çağıran yeni bir komut uygulayacağım.
Bence JProfiler gibi bir araç var. o güzel Eclipse
Bu uygulamayı profillemek gerekir ki varsayalım ... Ayrıca Eclipse için TPTP profil aracı kullanacağız. Canlı bir üretim ortamında dökmem gerekiyor. – Opty
ile bir kaç seçenek var çalışmak edeceğiz:
Bu liste ayrıntılı değildir.
Bu JVM'de JConsole ve HotSpot Diagnostic MBean'ı denediniz ve yığın dökümü için herhangi bir enstrümantasyon işlemi yok (belki win32 için kullanılabilir, ancak linux'da değil) – Opty
Önceki yoruma bakıldığında, canlı dökümü oluşturmak için kullanılabilen tek yöntem dökümünü yapılandırmak gibi görünüyor JVM başlangıçta -Xdump kullanarak sigusr (olaylar = kullanıcı) üzerinde. Sorun şu ki, kontrolsüz SIGUSR, JVM'de zaman zaman meydana gelebilir ... – Opty
@Opty - kullandığınız ürün hakkında fazla bir şey söylemezsiniz. Sistem döküntüleri oluşturmak için bazı alternatifler için buraya bakın: http://publib.boulder.ibm.com/infocenter/javasdk/v6r0/topic/com.ibm.java.doc.diagnostics.60/diag/tools/javadump_trigger.html Not Linux'taki bazı kısıtlamalar: http://publib.boulder.ibm.com/infocenter/javasdk/v6r0/topic/com.ibm.java.doc.diagnostics.60/diag/tools/dumpagents_platform_nonzos.html Neyi kontrol edeceğimi Bu, üretimde denemeden önce yük altında bir test sisteminin hafıza tüketimine yapar. – McDowell
"Sistem" dökümlerinin (temelde işletim sistemi çekirdek dosyaları) ve "yığın" aka taşınabilir yığın dökümü (PHD) olduğunu bilmeniz gerekir. Daha sonraki olanlar gerçek veriler içermediğinden daha az kullanışlıdır. Varsayılan olarak nasıl etkinleştirilirler.
AIX veya Linux'ta Genellikle bir yığın dökümü tetiklemek için kill -3 <pid>
izin vermek için -Xdump:system
(-Xdump:system:events=gpf+user
için kısa) ayarlayacaksınız.
BTW, varsayılan seçeneklerle kill -ABRT <pid>
'u kullanabilirsiniz. Ancak bu, JVM'nizi sonlandıracaktır. sistemde açıkken döker
> /usr/java6/bin/java -Xdump:what -version
Registered dump agents
----------------------
-Xdump:system:
events=gpf+abort+traceassert,
label=/home/u0002824/core.%Y%m%d.%H%M%S.%pid.%seq.dmp,
range=1..0,
priority=999,
request=serial
----------------------
...
java version "1.6.0"
Java(TM) SE Runtime Environment (build pap3260sr9fp2-20110627_03(SR9 FP2))
:
> /usr/java6/bin/java -Xdump:system -Xdump:what -version
Registered dump agents
----------------------
-Xdump:system:
events=gpf+user+abort+traceassert,
label=/home/u0002824/core.%Y%m%d.%H%M%S.%pid.%seq.dmp,
range=1..0,
priority=999,
request=serial
----------------------
-Xdump:heap:
events=systhrow,
filter=java/lang/OutOfMemoryError,
label=/home/u0002824/heapdump.%Y%m%d.%H%M%S.%pid.%seq.phd,
range=1..4,
priority=500,
request=exclusive+compact+prepwalk,
opts=PHD
----------------------
-Xdump:java:
events=gpf+user+abort+traceassert,
label=/home/u0002824/javacore.%Y%m%d.%H%M%S.%pid.%seq.txt,
range=1..0,
priority=400,
request=exclusive+preempt
----------------------
-Xdump:java:
events=systhrow,
filter=java/lang/OutOfMemoryError,
label=/home/u0002824/javacore.%Y%m%d.%H%M%S.%pid.%seq.txt,
range=1..4,
priority=400,
request=exclusive+preempt
----------------------
-Xdump:snap:
events=gpf+abort+traceassert,
label=/home/u0002824/Snap.%Y%m%d.%H%M%S.%pid.%seq.trc,
range=1..0,
priority=300,
request=serial
----------------------
-Xdump:snap:
events=systhrow,
filter=java/lang/OutOfMemoryError,
label=/home/u0002824/Snap.%Y%m%d.%H%M%S.%pid.%seq.trc,
range=1..4,
priority=300,
request=serial
----------------------
...
çekirdek üzerinde jre/bin/jextract
çalıştırmayı unutmayın
Run java -Xdump:what
gibi Varsayılanlarınızı görmek için. * .dmp dosyaları.
- 1. cuBLAS'da "saypx" yapmanın bir yolu var mı?
- 2. REXX'te ilişkilendirici diziler yapmanın bir yolu var mı?
- 3. Bir Cassandra sorgusunu "EXPLAIN" yapmanın bir yolu var mı?
- 4. Visual Studio'da "intraWord" metin gezinme yapmanın bir yolu var mı?
- 5. C# ciltleme işlemini statik olarak yapmanın bir yolu var mı?
- 6. ASCX yapmanın MVC yolu var mı?
- 7. PhpStorm'da klasör (dizin) araması yapmanın bir yolu var mı?
- 8. (Toplu) Tıklanabilir düğmeler yapmanın bir yolu var mı?
- 9. Android'den eksiksiz bir yığın izi görmenin bir yolu var mı?
- 10. ArrowAssoc desen eşleştirmesinde çalışma yapmanın bir yolu var mı?
- 11. Geliştirme sırasında uygun çalışma yapmanın bir yolu var mı?
- 12. Netbeans 8'de otomatik kaydetme yapmanın bir yolu var mı?
- 13. İki llvm-ir üzerinden geçiş yapmanın bir yolu var mı?
- 14. İstif üzerine yığın izi yazdırmanın bir yolu var mı?
- 15. Raylar/Yakut: Yığın izlerini kısaltmanın herhangi bir yolu var mı?
- 16. Yığın görünümündeki fotoğrafların sırasını değiştirmenin herhangi bir yolu var mı?
- 17. 'heapdump.xxx.phd'. Değil bir HPROF yığın dökümü (java.io.IOException) bir HPROF yığın dökümü değil
- 18. CarrierWave/Fog için bir Yükleme İlerleme Göstergesi yapmanın bir yolu var mı?
- 19. Linux borularının performansını iyileştirmenin bir yolu var mı?
- 20. 'Union' a tek bir öğe için daha iyi bir linux yolu var mı?
- 21. Blackberry'de bir Dize biçiminde yığın özelliğinin yığın izini almanın bir yolu var mı?
- 22. Linux PID'nin duraklatılıp durdurulmadığını belirlemek için bir yol var mı?
- 23. MySQL'de GROUP BY WITH CUBE ile benzetim yapmanın bir yolu var mı?
- 24. Bir TextBlock'ta XAML'de bir Drop Shadow efekti yapmanın bir yolu var mı?
- 25. ReadVirtual nedeniyle yığın dökümü oluşturulamadı
- 26. burada tablo. * <> Tablo. * - Böyle bir şey yapmanın bir yolu var mı?
- 27. Bir ustura (MVC3) görünümünde 'extern alias' yapmanın bir yolu var mı?
- 28. Ustabaşı ile figaro kullanmak için bir yolu var mı?
- 29. Django ile akbaba kullanmak için basit bir yolu var mı?
- 30. "if" ifadesi için intelliJ fikir ekranı katlanır geçişlerini yapmanın bir yolu var mı?
Amaç, yalnızca üretim ortamında oluşan bir sızıntı bulmaktır. Ben jvm duramıyorum ne de OutOfMemoryException (çok uzun) gerçekleşmesi için bekleyemezsiniz – Opty