2015-10-07 84 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如何在内部具有不同的意义。仍然任何资源/参考解释他相同将不胜感激。