cargo clean 仅删除当前项目 target/ 目录,不清理 VSCode 的 WorkspaceStorage(被进程锁住)、全局 Cargo 缓存(~/.cargo/registry/git)及后台残留进程占用的文件句柄,故磁盘空间无变化。

VSCode 运行 Rust 项目时,target 目录会持续膨胀,且 VSCode 自身缓存(如 WorkspaceStorage)和 Cargo 缓存(~/.cargo/registry)会叠加占用数十 GB 空间;单纯删 target 不够,必须联动清理三类路径才能真正释放空间。
为什么 cargo clean 在 VSCode 里执行后磁盘空间没变?
常见错误现象:cargo clean 命令成功执行、target/ 目录消失,但系统磁盘占用几乎不变。
- VSCode 正在运行时,
WorkspaceStorage子目录仍被锁住(尤其 WSL 或远程工作区),即使target删除了,其索引快照仍占几百 MB–几 GB -
cargo clean只清当前项目的target/,不碰全局依赖缓存~/.cargo/registry和~/.cargo/git,这两者常达 10–30 GB - VSCode 内置终端未退出、或后台残留
node.exe/Code Helper进程,导致文件句柄未释放,系统无法回收空间
如何让 cargo clean 和 VSCode 缓存清理真正联动?
关键不是“先后执行”,而是按依赖链顺序清理:先断开 VSCode 对构建产物的引用,再删 Cargo 输出,最后清全局缓存。
- 在 VSCode 中执行
Ctrl+Shift+P→ 输入Developer: Restart Language Server,确保rust-analyzer不再持有target/中的文件锁 - 若用 Remote-WSL,先执行
Remote-WSL: Close Remote Connection,再在 Windows 终端运行wsl --shutdown - 彻底退出所有 VSCode 进程(Windows 查任务管理器杀光
Code.exe、Code Helper.exe、node.exe;macOS 用活动监视器强退所有Code相关进程) - 此时再进项目目录运行
cargo clean,或手动rm -rf target/,空间才会真实释放
哪些目录可以安全批量清理?
以下路径删除后不影响配置、插件状态或 rust-analyzer 功能,重启 VSCode 会自动重建必要部分:
-
%APPDATA%\Code\Cache和%APPDATA%\Code\GPUCache(Windows);~/Library/Application Support/Code/Cache(macOS)——纯 Chromium 渲染缓存,删完首次启动稍慢 -
%APPDATA%\Code\WorkspaceStorage(Windows)或~/Library/Application Support/Code/WorkspaceStorage(macOS)中修改时间早于 90 天的子目录——按“修改日期”排序后直接删,名字长 + 体积大(如1.8 GB)的优先 -
~/.cargo/registry/cache和~/.cargo/registry/src——保留index目录即可,其余可全删;cargo clean --release不影响这里,必须手动清 -
~/.vscode/extensions/下带-cache后缀的文件夹(如ms-python.python-2024.12.0-cache),这些是插件更新中断残留,删后重启 VSCode 会重下
rust-analyzer 检查卡顿或提示延迟高,可能和缓存有关吗?
有关,但不是传统“缓存太多”,而是 rust-analyzer 在重复扫描已编译但未清理的旧 target/ 或 WorkspaceStorage 中的 stale 符号数据。
- 如果保存后数秒才出错误提示,或跳转定义失效,先检查
rust-analyzer日志(命令面板 →Rust Analyzer: Open Log),看是否有failed to read file from target/...类报错 -
rust-analyzer默认不读target/,但如果项目启用了cargo check --all-targets,它会尝试解析target/debug/deps/下的 rmeta 文件;这些文件若来自不同 toolchain 或旧版本 rustc,会导致解析卡死 - 解决方案:清理
target/后,再在命令面板运行Rust Analyzer: Reload Workspace,强制丢弃所有缓存符号表
真正麻烦的从来不是单个 target/ 目录,而是 VSCode 的 WorkspaceStorage 和 Cargo 的 ~/.cargo/registry 长期共存、互不感知。它们各自独立增长,但共同挤压磁盘——你得同时盯住三个地方,缺一不可。


















