windows Java 幽灵转发壳进程
标题党了有点。但是之前没注意的一个小现象。
本地java -jar .\j21web-1.0.0-SNAPSHOT.jar起了一个java进程,然后ps
ps | findstr java
144 10 1884 10764 0.16 10216 1 java
503 35 237016 188456 21.03 15476 1 java
出来了俩进程,这是怎么回事? 然后ctrl-c中止应用,俩进程一起消失。
因为知道应用绑的是8080端口,所以看一下哪个进程是我的应用:
netstat -ano | findstr 8080
TCP 0.0.0.0:8080 0.0.0.0:0 LISTENING 15476
TCP [::]:8080 [::]:0 LISTENING 15476
15476是java -jar启动的JVM进程了,那10216又是啥?
wmic process where processid=15476 get caption,commandline
Caption CommandLine
java.exe "C:\Program Files\Java\jdk-21.0.10\bin\java.exe" -jar .\j21web-1.0.0-SNAPSHOT.jar
wmic process where processid=10216 get caption,commandline
Caption CommandLine
java.exe "C:\Program Files\Common Files\Oracle\Java\javapath\java.exe" -jar .\j21web-1.0.0-SNAPSHOT.jar
注意看,java.exe启动路径不一样,C:\Program Files\Common Files\Oracle\Java\javapath\java.exe这个是个Oracle的转发壳进程,不是个JVM进程。
java -jar启动的时候,它负责拉起真正的 JVM(jdk-21.0.10\bin\java.exe)作为子进程,然后自己留在原地等子进程退出。
浙公网安备 33010602011771号