2015-10-07 29 views
2

我有一個javadump文件,我必須分析。通常,線程ID在javadumps中以前綴名稱tid:指定。然而在這個javadumps中,我沒有找到tid:。那麼使用什麼名稱將線程ID轉儲到此特定文件中?幾行線程轉儲必須包含線程ID是:javadumps中的線程ID是什麼?

3XMTHREADINFO  "WLMMonitorSleeper : 0" J9VMThread:0x0000000082586300, j9thread_t:0x00007FC3E0940D30, java/lang/Thread:0x00000000022D6160, state:CW, prio=5 
3XMTHREADINFO1   (native thread ID:0x2EA7, native priority:0x5, native policy:UNKNOWN) 
3XMTHREADINFO2   (native stack address range from:0x00007FC3AFE39000, to:0x00007FC3AFE7A000, size:0x41000) 

(人們可以找到類似的javadumps在this article,這也解釋瞭如何分析線程轉儲,但仍然沒有什麼地方是線程ID談判)

我猜測線程ID必須是第一行中的一個:J9VMThread,j9thread_tjava/lang/Thread。但不確定。沒有在網上找到任何信息,包括IBM的知識中心。如果其中一個是java線程標識,那麼其他兩個是什麼?請提供解釋相同的在線參考。

關於哪些版本的Java此Java轉儲屬於,這些都是從同一個文件中的一些行:

0SECTION  GPINFO subcomponent dump routine 
NULL   ================================ 
2XHOSLEVEL  OS Level   : Linux 2.6.32-279.el6.x86_64 
2XHCPUS  Processors - 
3XHCPUARCH  Architecture : amd64 
3XHNUMCPUS  How Many  : 2 
3XHNUMASUP  NUMA is either not supported or has been disabled by user 
NULL   
1XHERROR2  Register dump section only produced for SIGSEGV, SIGILL or SIGFPE. 
NULL   
NULL   ------------------------------------------------------------------------ 
0SECTION  ENVINFO subcomponent dump routine 
NULL   ================================= 
1CIJAVAVERSION JRE 1.6.0 Linux amd64-64 build 20120308_104898 (pxa6460_26sr1fp1-20120309_01(SR1 FP1)) 
1CIVMVERSION VM build R26_Java626_SR1_FP1_20120308_1511_B104898 
1CIJITVERSION r11_20111028_21230ifx5 
1CIGCVERSION GC - R26_Java626_SR1_FP1_20120308_1511_B104898_CMPRSS 
+0

你想用線程ID做什麼?如果你想將它與WinDbg進行比較,'本地線程ID:0x2EA7'看起來相當不錯。 –

+0

但那些'J9VMThread:0x0000000082586300,j9thread_t:0x00007FC3E0940D30,java/lang/Thread:0x00000000022D6160'? 正如我所說,我會要求他們做一些分析。 – Mahesha999

+0

對我來說,這些都看起來像64位地址。可能是內存中對象的位置。但這只是一個猜測。我還不太熟悉Java。 –

回答

0

我一直在尋找的分析視角。目前我感覺,我會用J9VMThread。因爲那是在同一個日誌文件中使用的其他id。例如,在日誌文件中的LOCKS subcomponent dump routine,有:

2LKMONINUSE  sys_mon_t:0x00007FC3BCD2D530 infl_mon_t: 0x00007FC3BCD2D5A8: 
3LKMONOBJECT  org/apache/log4j/spi/[email protected]: Flat locked by "Thread 1" (0x000000008502FD00), entry count 1 
3LKWAITERQ   Waiting to enter: 
3LKWAITER    "Thread 2" (0x000000008445AF00) 
3LKWAITER    "Thread 3" (0x0000000085046300) 
3LKWAITER    "Thread 4" (0x000000008506CA00) 
3LKWAITER    "Thread 5" (0x00000000846FB700) 

這說Thread 10x00000000055E5170Thread 2Thread 3Thread 4Thread 5已被禁止持有鎖。線程5的Id是0x000000008502FD00,鎖對象的ID是0x00000000055E5170。如果您檢查THREADS subcomponent dump routine相應的線程的詳細信息,我們會發現這些鎖定對象的ID和線程5的以下列方式ID:

3XMTHREADBLOCK  Blocked on: org/apache/log4j/spi/[email protected] Owned by: "WebContainer : 57" (J9VMThread:0x000000008502FD00, java/lang/Thread:0x000000000B7164B0) 

java/lang/Thread:0x000000000B7164B0包含在上述行,但因爲這個ID沒首選它沒有出現在LOCKS subcomponent dump routine

這再一次只是觀察。我仍然不知道哪個十六進制代碼意味着什麼,以及J9VMThread,j9thread_t,java/lang/Threadnative thread id如何在內部具有不同的意義。仍然任何資源/參考解釋他相同將不勝感激。