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)作为子进程,然后自己留在原地等子进程退出。

posted on 2026-08-24 11:12  幽州散人  阅读(7)  评论(0)    收藏  举报

导航