strace 命令查看操作系统日志
strace -ff -o out java ***.class
-ff : 跟踪进程下所有线程用到的系统命令
-o : 将跟踪的操作系统日志输出
下面查看JDK1.8下,BIO模式都有哪些系统命令的执行
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| package com.ibli.javaBase.io.bio;
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.net.ServerSocket; import java.net.Socket;
public class SockerIo {
public static void main(String[] args) throws IOException {
ServerSocket serverSocket = new ServerSocket(9090); Socket client = serverSocket.accept();
InputStream inputStream = client.getInputStream();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream)); System.err.println(bufferedReader.readLine());
while (true){
} } }
|
服务端
1、javac SockerIo.java
得到SockerIo.class
然后,使用strace启动java程序👇:
2、strace -ff -0 out java SockerIo
得到如下日志:
客户端使用nc连接9090端口,然后请求数据
nc 127.0.0.1 9090
发送如下数据
strace查看日志
查看主线程日志:
如上图,👆文件最大的是主线程日志:
根据上面👆strace命令跟踪的日志可以看到,JDK1.8下的BIO的多路复用器是使用的「poll」