1
今天我們有一個生產java過程被凍結。我們做了一些系統檢查,例如磁盤空間檢查,內存爭用等。我們猜測進程已經死鎖,所以在我們反彈之前,我們在pid上運行了pstack
命令。我無法從輸出中解釋很多。我如何閱讀這些日誌?我谷歌搜索堆棧和相關的幫助,但無法獲得太多的信息..如何解釋pstack日誌?
這是堆棧跟蹤的頂部。看起來我們正在等待一個條件?從JNI線程調用DestroyVM
危險嗎?
Thread 87 (Thread 0x406a3940 (LWP 18762)):
#0 0x000000325d60a899 in [email protected]@GLIBC_2.3.2()
#1 0x00002b6f8fd9177e in os::PlatformEvent::park()
#2 0x00002b6f8fd67595 in Monitor::IWait()
#3 0x00002b6f8fd67bfd in Monitor::wait()
#4 0x00002b6f8fea0295 in Threads::destroy_vm()
#5 0x00002b6f8fba6eab in jni_DestroyJavaVM()
#6 0x000000004000223f in JavaMain()
#7 0x000000325d606367 in start_thread() from /lib64/libpthread.so.0
#8 0x000000325cad30ad in clone() from /lib64/libc.so.6
任何指針/幫助非常感謝。謝謝!
運行JMX控制檯沒有幫助。我們所有的都是GC日誌和應用程序日誌(一旦進程凍結,就會突然凍結,應用程序日誌中的所有內容都顯得正常,沒有例外或者其他類似的東西) – Manju 2011-05-26 01:06:04
我認爲您需要發佈整個轉儲。上面的那個可能只是一個已經完成的主要方法,但是在完成之前已經產生了其他非守護進程的線程,因此它正坐在那裏等待所有其他人在它死亡之前死亡。 – Matt 2011-05-26 07:22:01