惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

云风的 BLOG
云风的 BLOG
博客园 - 三生石上(FineUI控件)
WordPress大学
WordPress大学
F
Fortinet All Blogs
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
博客园 - 叶小钗
爱范儿
爱范儿
美团技术团队
H
Hackread – Cybersecurity News, Data Breaches, AI and More
有赞技术团队
有赞技术团队
博客园_首页
T
The Blog of Author Tim Ferriss
T
Tailwind CSS Blog
V
Visual Studio Blog
Jina AI
Jina AI
博客园 - Franky
量子位
MongoDB | Blog
MongoDB | Blog
L
LangChain Blog
Apple Machine Learning Research
Apple Machine Learning Research
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
U
Unit 42
aimingoo的专栏
aimingoo的专栏
M
MIT News - Artificial intelligence

博客园 - 幽州散人

SQL优化案例 synchronized 为啥会让虚拟线程卸载失效 主线任务和使命 温州3日之旅 CompletableFuture + 异步Servlet:同步的姿势、异步的效果 Snowflake雪花算法与发号器的应用 也谈MySQL limit offset深翻页问题 SHOW SESSION STATUS 与 Handler 变量 MySQL 5.7 Profiles 执行性能分析 MySQL临时表与文件排序 MySQL 5.7 MRR多范围读优化 MySQL 5.7 ICP索引条件下推优化 MySQL符合索引与最左前缀原则 从I/O 的物理成本理解回表和索引覆盖 第4个电瓶以及补漆 Flink原理:并行度与keyGroup桶 什么是数字批发银行 Java虚拟线程(三)实现原理 Java虚拟线程(二) Java虚拟线程(一) 大模型推理层服务化架构 传奇调查员之路:理智值-99,但我必须听懂深渊的语言 js里调用智能合约读/写函数的方法的区别 字节与其16进制字符表示转换的bug Redisson分布式锁 交易心得 DexScreener接口初探 某安全软件跑飞了。。 Ed25519算法签名与验签的Java实现 Tendermint拜占庭容错引擎
windows Java 幽灵转发壳进程
幽州散人 · 2026-08-24 · via 博客园 - 幽州散人

标题党了有点。但是之前没注意的一个小现象。
本地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)作为子进程,然后自己留在原地等子进程退出。