实测(2026-09-06,.app,会话恢复了几个标签 + 一个终端)
| 进程 |
线程 |
Physical footprint |
lite-ide(我们自己的) |
8–10 |
32 MB |
WebKit.WebContent |
4 |
106–173 MB |
WebKit.GPU |
6–8 |
16–29 MB |
WebKit.Networking |
3–4 |
4.5 MB |
| 合计 |
21–26 |
155–238 MB |
量法:vmmap --summary <pid> | grep "Physical footprint",不是 RSS
(RSS 会把共享的框架重复计进每个进程)。
问题
docs/ARCHITECTURE.md §7 写的是「空闲内存 < 200MB」,而实测在开了几个
标签之后就会破。README 里那条「常驻内存 98 MB(含 mmap 引擎 + WebKit 两个
进程)」更是陈旧的 —— 实际是 4 个进程,而且数字差一倍多。(README 和
ARCHITECTURE 的数字已经在这一轮改成实测值了,但预算本身还没决定怎么办。)
两件事要分开看
Rust 侧只占 32 MB,涨的部分全在 WebKit 的渲染进程上。 也就是说这不是
日志引擎的问题 —— mmap 那套是对的,logengine 的索引内存实测 69.8 KB。
涨的是前端:CM6、xterm、67 个语言包里被真正加载的那些、以及每个打开的文档。
可能的走向(都没验过,先记着)
- 改预算的口径。 「空闲」这个词对这个应用是不成立的 —— 会话恢复会把上次
的标签开回来,它没有真正的空闲态。改成「开 N 个标签 + 1 个终端时 < X MB」
这种可量的口径。
- 量一下 WebContent 里到底是谁。 Safari 的 Web Inspector 能连上
WKWebView(需要在 tauri.conf.json 里开 devtools 的 release 构建),
先看堆快照再谈优化。
- 关掉的标签有没有真的释放。
{#key active.id} 会销毁重建编辑器实例,
但 CM6 的 state / 语言包缓存是不是跟着走,没查过。这条最值得先查——
如果是泄漏,那 155→238 的漂移就有解释了。
先做 3,它是唯一可能是 bug 而不是「本来就要这么多」的一条。
实测(2026-09-06,
.app,会话恢复了几个标签 + 一个终端)lite-ide(我们自己的)WebKit.WebContentWebKit.GPUWebKit.Networking量法:
vmmap --summary <pid> | grep "Physical footprint",不是 RSS(RSS 会把共享的框架重复计进每个进程)。
问题
docs/ARCHITECTURE.md§7 写的是「空闲内存 < 200MB」,而实测在开了几个标签之后就会破。README 里那条「常驻内存 98 MB(含 mmap 引擎 + WebKit 两个
进程)」更是陈旧的 —— 实际是 4 个进程,而且数字差一倍多。(README 和
ARCHITECTURE 的数字已经在这一轮改成实测值了,但预算本身还没决定怎么办。)
两件事要分开看
Rust 侧只占 32 MB,涨的部分全在 WebKit 的渲染进程上。 也就是说这不是
日志引擎的问题 —— mmap 那套是对的,
logengine的索引内存实测 69.8 KB。涨的是前端:CM6、xterm、67 个语言包里被真正加载的那些、以及每个打开的文档。
可能的走向(都没验过,先记着)
的标签开回来,它没有真正的空闲态。改成「开 N 个标签 + 1 个终端时 < X MB」
这种可量的口径。
WKWebView(需要在
tauri.conf.json里开 devtools 的 release 构建),先看堆快照再谈优化。
{#key active.id}会销毁重建编辑器实例,但 CM6 的 state / 语言包缓存是不是跟着走,没查过。这条最值得先查——
如果是泄漏,那 155→238 的漂移就有解释了。
先做 3,它是唯一可能是 bug 而不是「本来就要这么多」的一条。