Well in that case using the /proc command comes in handy.
ls /proc lists all the processes running on the system currently.
my-desktop:~$ ls /proc 1 2133 24921 3132 3615 3744 fb partitions 10 2134 25 3135 3616 4 filesystems sched_debug 11 2141 25214 3139 3618 4763 fs schedstat 12 2142 26 3159 3629 5 interrupts scsi 12087 22 26408 3163 3633 5587 iomem self 13 2213 26426 3165 3639 6 ioports slabinfo 14 2258 2881 3183 3645 7 irq stat 1495 2281 29 3184 3654 722 kallsyms swaps 15 2283 2913 3198 3656 8 kcore sys 16 22886 2935 32 3658 856 key-users sysrq-trigger 16653 22894 2938 3211 3664 9 kmsg sysvipc 17 2306 2939 3240 3669 acpi kpagecount timer_list 18 23177 294 33 3671 asound kpageflags timer_stats 1865 23186 3 3316 3673 buddyinfo latency_stats tty 19 23191 30 3344 3674 bus loadavg uptime 19405 23194 3002 34 3679 cgroups locks version 19406 23197 30137 3466 3683 cmdline mdstat version_signature 19407 2330 3032 35 3685 cpuinfo meminfo vmallocinfo 19445 23701 3077 3536 3691 crypto misc vmstat 19988 2389 3080 3549 3694 devices modules zoneinfo 2 24 3081 36 3707 diskstats mounts 20 2431 309 3606 3724 dma mtrr 20798 24772 3099 3609 3728 driver net 21 24803 31 3610 3740 execdomains pagetypeinfo
Say we want to take a thread dump of a java process (PID 24772).
/proc/24772/fd/1 gets you the stdout interface of the Java process where 1 is the file-descriptor for stdout.
You can capture the output to stdoutby issuing the command
cat /proc/24772/fd/1
Now to generate a thread dump issue this from another session
kill -3 24772
You should see the thread dump output like this..
my-desktop:~$ cat /proc/24772/fd/1 2009-09-08 10:41:19 Full thread dump Java HotSpot(TM) Client VM (14.2-b01 mixed mode, sharing): "Low Memory Detector" daemon prio=10 tid=0x09060c00 nid=0x60d0 runnable [0x00000000] java.lang.Thread.State: RUNNABLE "CompilerThread0" daemon prio=10 tid=0x0905dc00 nid=0x60ce waiting on condition [0x00000000] java.lang.Thread.State: RUNNABLE "Signal Dispatcher" daemon prio=10 tid=0x0905c400 nid=0x60cd waiting on condition [0x00000000] java.lang.Thread.State: RUNNABLE "Finalizer" daemon prio=10 tid=0x0904dc00 nid=0x60cc in Object.wait() [0xb5326000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x8bcd8918> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:118) - locked <0x8bcd8918> (a java.lang.ref.ReferenceQueue$Lock) at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:134) at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:159) "Reference Handler" daemon prio=10 tid=0x09049400 nid=0x60ca in Object.wait() [0xb5377000] java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) - waiting on <0x8bcd89a0> (a java.lang.ref.Reference$Lock) at java.lang.Object.wait(Object.java:485) at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:116) - locked <0x8bcd89a0> (a java.lang.ref.Reference$Lock) "main" prio=10 tid=0x09023400 nid=0x60c6 runnable [0xb75e9000] java.lang.Thread.State: RUNNABLE at java.net.PlainSocketImpl.socketAccept(Native Method) at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:390) - locked <0x8b8364b8> (a java.net.SocksSocketImpl) at java.net.ServerSocket.implAccept(ServerSocket.java:453) at java.net.ServerSocket.accept(ServerSocket.java:421) at org.coastal.log4jext.SocketServerAsWinService.main(SocketServerAsWinService.java:41) "VM Thread" prio=10 tid=0x09047800 nid=0x60c9 runnable "VM Periodic Task Thread" prio=10 tid=0x09062800 nid=0x60d1 waiting on condition JNI global references: 945 Heap def new generation total 960K, used 488K [0x8b7d0000, 0x8b8d0000, 0x8bcb0000) eden space 896K, 47% used [0x8b7d0000, 0x8b83a3b8, 0x8b8b0000) from space 64K, 100% used [0x8b8c0000, 0x8b8d0000, 0x8b8d0000) to space 64K, 0% used [0x8b8b0000, 0x8b8b0000, 0x8b8c0000) tenured generation total 4096K, used 467K [0x8bcb0000, 0x8c0b0000, 0x8f7d0000) the space 4096K, 11% used [0x8bcb0000, 0x8bd24f00, 0x8bd25000, 0x8c0b0000) compacting perm gen total 12288K, used 373K [0x8f7d0000, 0x903d0000, 0x937d0000) the space 12288K, 3% used [0x8f7d0000, 0x8f82d6a0, 0x8f82d800, 0x903d0000) ro space 8192K, 74% used [0x937d0000, 0x93dca2a8, 0x93dca400, 0x93fd0000) rw space 12288K, 59% used [0x93fd0000, 0x946e7878, 0x946e7a00, 0x94bd0000)
Also here:
ReplyDeletehttp://howtodoinjava.com/2012/12/19/how-to-get-thread-dump-in-linux-using-jstack/