700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 使用jps和jstack查看java的进程和线程信息

使用jps和jstack查看java的进程和线程信息

时间:2021-01-03 23:50:57

相关推荐

使用jps和jstack查看java的进程和线程信息

jps:列出正在运行的进程的pid, pnamejstack -l pid: 列出某个进程内的线程,包含用户线程,守护线程和其它线程,守护线程有编译线程和引用处理线程

C:\Users\DELLOR>jps5412 BootLanguagServerBootApp10460 PipedIODemo1614017964 JpsC:\Users\DELLOR>jstack -l 10460-01-29 20:53:48Full thread dump Java HotSpot(TM) 64-Bit Server VM (25.261-b12 mixed mode):"DestroyJavaVM" #13 prio=5 os_prio=0 tid=0x00000247c1691000 nid=0x5f8 waiting on condition [0x0000000000000000]java.lang.Thread.State: RUNNABLELocked ownable synchronizers:- None"recieve" #12 prio=5 os_prio=0 tid=0x00000247d969d800 nid=0x38c8 in Object.wait() [0x000000c3029ff000]java.lang.Thread.State: TIMED_WAITING (on object monitor)at java.lang.Object.wait(Native Method)- waiting on <0x00000000d64b3280> (a java.io.PipedInputStream)at java.io.PipedInputStream.read(Unknown Source)- locked <0x00000000d64b3280> (a java.io.PipedInputStream)at java.io.PipedInputStream.read(Unknown Source)- locked <0x00000000d64b3280> (a java.io.PipedInputStream)at java.io.InputStream.read(Unknown Source)at iopart.Recieve.run(PipedIODemo.java:61)at java.lang.Thread.run(Unknown Source)Locked ownable synchronizers:- None"send" #11 prio=5 os_prio=0 tid=0x00000247d969c800 nid=0x305c runnable [0x000000c3028fe000]java.lang.Thread.State: RUNNABLEat java.io.FileInputStream.readBytes(Native Method)at java.io.FileInputStream.read(Unknown Source)at java.io.BufferedInputStream.read1(Unknown Source)at java.io.BufferedInputStream.read(Unknown Source)- locked <0x00000000d6359a98> (a java.io.BufferedInputStream)at sun.nio.cs.StreamDecoder.readBytes(Unknown Source)at sun.nio.cs.StreamDecoder.implRead(Unknown Source)at sun.nio.cs.StreamDecoder.read(Unknown Source)- locked <0x00000000d645ac98> (a java.io.InputStreamReader)at java.io.InputStreamReader.read(Unknown Source)at java.io.Reader.read(Unknown Source)at java.util.Scanner.readInput(Unknown Source)at java.util.Scanner.next(Unknown Source)at iopart.Send.run(PipedIODemo.java:27)at java.lang.Thread.run(Unknown Source)Locked ownable synchronizers:- None"Service Thread" #10 daemon prio=9 os_prio=0 tid=0x00000247d830e800 nid=0x8b0 runnable [0x0000000000000000]java.lang.Thread.State: RUNNABLELocked ownable synchronizers:- None"C1 CompilerThread3" #9 daemon prio=9 os_prio=2 tid=0x00000247d82ee000 nid=0x3998 waiting on condition [0x0000000000000000]java.lang.Thread.State: RUNNABLELocked ownable synchronizers:- None"C2 CompilerThread2" #8 daemon prio=9 os_prio=2 tid=0x00000247d82e6800 nid=0x2344 waiting on condition [0x0000000000000000]java.lang.Thread.State: RUNNABLELocked ownable synchronizers:- None"C2 CompilerThread1" #7 daemon prio=9 os_prio=2 tid=0x00000247d82e0800 nid=0x3d94 waiting on condition [0x0000000000000000]java.lang.Thread.State: RUNNABLELocked ownable synchronizers:- None"C2 CompilerThread0" #6 daemon prio=9 os_prio=2 tid=0x00000247d82de800 nid=0x2f8c waiting on condition [0x0000000000000000]java.lang.Thread.State: RUNNABLELocked ownable synchronizers:- None"Attach Listener" #5 daemon prio=5 os_prio=2 tid=0x00000247d82de000 nid=0x2744 waiting on condition [0x0000000000000000]java.lang.Thread.State: RUNNABLELocked ownable synchronizers:- None"Signal Dispatcher" #4 daemon prio=9 os_prio=2 tid=0x00000247d82dd000 nid=0x1464 runnable [0x0000000000000000]java.lang.Thread.State: RUNNABLELocked ownable synchronizers:- None"Finalizer" #3 daemon prio=8 os_prio=1 tid=0x00000247d825a800 nid=0x32d8 in Object.wait() [0x000000c301ffe000]java.lang.Thread.State: WAITING (on object monitor)at java.lang.Object.wait(Native Method)- waiting on <0x00000000d6308ee0> (a java.lang.ref.ReferenceQueue$Lock)at java.lang.ref.ReferenceQueue.remove(Unknown Source)- locked <0x00000000d6308ee0> (a java.lang.ref.ReferenceQueue$Lock)at java.lang.ref.ReferenceQueue.remove(Unknown Source)at java.lang.ref.Finalizer$FinalizerThread.run(Unknown Source)Locked ownable synchronizers:- None"Reference Handler" #2 daemon prio=10 os_prio=2 tid=0x00000247d8239800 nid=0x2af0 in Object.wait() [0x000000c301efe000]java.lang.Thread.State: WAITING (on object monitor)at java.lang.Object.wait(Native Method)- waiting on <0x00000000d6306c00> (a java.lang.ref.Reference$Lock)at java.lang.Object.wait(Unknown Source)at java.lang.ref.Reference.tryHandlePending(Unknown Source)- locked <0x00000000d6306c00> (a java.lang.ref.Reference$Lock)at java.lang.ref.Reference$ReferenceHandler.run(Unknown Source)Locked ownable synchronizers:- None"VM Thread" os_prio=2 tid=0x00000247d8236000 nid=0x4334 runnable"GC task thread#0 (ParallelGC)" os_prio=0 tid=0x00000247c16a9000 nid=0x13bc runnable"GC task thread#1 (ParallelGC)" os_prio=0 tid=0x00000247c16aa000 nid=0x313c runnable"GC task thread#2 (ParallelGC)" os_prio=0 tid=0x00000247c16ab800 nid=0xa88 runnable"GC task thread#3 (ParallelGC)" os_prio=0 tid=0x00000247c16ae000 nid=0x1704 runnable"GC task thread#4 (ParallelGC)" os_prio=0 tid=0x00000247c16af000 nid=0x4254 runnable"GC task thread#5 (ParallelGC)" os_prio=0 tid=0x00000247c16b0000 nid=0x3458 runnable"GC task thread#6 (ParallelGC)" os_prio=0 tid=0x00000247c16b3000 nid=0x3300 runnable"GC task thread#7 (ParallelGC)" os_prio=0 tid=0x00000247c16b4000 nid=0x3284 runnable"VM Periodic Task Thread" os_prio=2 tid=0x00000247d9651000 nid=0x2c8c waiting on conditionJNI global references: 5

管道流用于线程间传输数据,创建两个线程,一个线程向管道里写入从键盘输入的数据,另一个线程从管道里读取数据,并打印至控制台。

运行的进程为PipedIODemo,在此进程中创建了两个线程,名称为"send"和"recieve",表示发送线程和接收线程。进程和线程信息可使用jps和jstack查看。

package iopart;import java.io.IOException;import java.io.PipedInputStream;import java.io.PipedOutputStream;import java.util.Scanner;public class PipedIODemo {public static void main(String[] args) {Send send = new Send();Recieve recieve = new Recieve();recieve.connect(send.getOut());new Thread(send,"send").start();new Thread(recieve,"recieve").start();}}class Send implements Runnable{PipedOutputStream out=new PipedOutputStream();public PipedOutputStream getOut() {return out;}Scanner sc=new Scanner(System.in);@Overridepublic void run() {String next = null;while(!"end".equalsIgnoreCase(next)) {next= sc.next();try {out.write(next.getBytes());} catch (IOException e) {e.printStackTrace();}}try {if (out!=null) {out.close();}} catch (IOException e) {e.printStackTrace();}}}class Recieve implements Runnable{PipedInputStream in=new PipedInputStream();public PipedInputStream getIn() {return in;}public void connect(PipedOutputStream out) {try {this.in.connect(out);} catch (IOException e) {e.printStackTrace();}}@Overridepublic void run() {byte[] bytes=new byte[1024];while(true) {try {in.read(bytes);System.out.println(new String(bytes));} catch (IOException e) {e.printStackTrace();}}}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。