Unix Domain Socket仅用于本地进程间通信, 而网络socket用于网络间的进程间通信....第三种方式,通过C语言的方式, 之所以通过C语言的方式,旨在说明一点,不管我们使用的是jstack命令,还是上面的Java程序,或者阿里开源的Arthas(阿尔萨斯)工具,在它们的底层,都是通过同一种方式与目标...个人理解: 如果真想把JVM或者JDK学透了,C语言是要熟悉的. JVM的底层都是C语言,包括与操作系统的一些交互,都是C语言....线程就会创建一个服务端的socket, 那么客户端就可以根据这个/tmp/.java_pid的文件创建一个客户端,然后与服务端进行通信了....本篇啰嗦这么多,主要就是在表达,如何与目标JVM进行通信,以及涉及的一些线程和知识点.