应设置C_Cpp.intelliSenseCacheSize(单位MB)作为硬性上限并配合C_Cpp.intelliSenseCachePath指定非系统盘路径,修改后需重启语言服务器且手动清理旧缓存才能生效。

设置 C_Cpp.intelliSenseCacheSize 限制 C/C++ 扩展缓存大小
VS Code 的 C/C++ 扩展(ms-vscode.cpptools)默认会把 IntelliSense 预编译头、符号索引等缓存写入 vscode-cpptools 文件夹,且不自动清理。长期打开大型项目后,ipch 子目录可能膨胀到数 GB。限制它的核心方式是配置 C_Cpp.intelliSenseCacheSize,单位为 MB。
这个值不是“软提示”,而是硬性上限:缓存达到该值后,扩展会按 LRU 策略淘汰旧条目,不会继续增长。
- 在 VS Code 中按
Ctrl + ,打开设置,搜索Intelli Sense Cache Size,直接输入数字(如2048表示 2GB) - 或编辑
settings.json,添加:"C_Cpp.intelliSenseCacheSize": 2048
- 设为
0可完全禁用缓存(不推荐,会显著降低跳转/补全响应速度) - 修改后无需重启 VS Code,但已打开的项目需重新触发 IntelliSense(如保存文件或执行
Ctrl + Shift + P→Developer: Restart Language Server)
files.maxMemoryForLargeFilesMB 不影响 C/C++ 缓存,别混淆
这个配置控制的是“文本文件加载内存上限”,和 vscode-cpptools 缓存无关。它只在以下两个条件同时满足时生效:
- 文件大小超过该值
- 当前语言模式未激活语法服务(例如被识别为 Plain Text,或 C/C++ 扩展尚未完成初始化)
常见误解:调大它能让 ipch 目录变小——完全无效。它管的是编辑器如何读取文件,不是扩展如何存缓存。
如果你看到 vscode-cpptools 占用飙升,检查点永远是 C_Cpp.intelliSenseCachePath 和 C_Cpp.intelliSenseCacheSize,不是这个。
为什么改了 C_Cpp.intelliSenseCacheSize 还没见效?
最常被忽略的是缓存路径没同步更新,导致新限制仍作用于原位置(通常是 C 盘),而你误以为没生效。
- 必须配合设置
C_Cpp.intelliSenseCachePath指向非系统盘(如"D:\vscode-cpptools"),否则即使设了2048,缓存仍在C:Users...AppDataLocalMicrosoftscode-cpptools滚雪球 - 已有缓存不会自动收缩:旧
ipch文件仍保留,直到被新缓存挤出或手动删除 - 扩展需重建索引:首次应用新限制后,打开项目时可能短暂卡顿,这是正常重建过程
- 确认是否生效:打开任意 C/C++ 文件,按
Ctrl + Shift + P→ 输入C/C++: Show IntelliSense Diagnostics,查看输出中Cache path和Cache size limit是否匹配你的设置
删缓存前务必关死所有 VS Code 进程
直接删 vscode-cpptools 是安全的,但前提是 VS Code 完全退出——包括后台静默运行的 Code Helper.exe 或 node.exe 进程。Windows 下残留进程会锁住文件句柄,导致删除失败或磁盘空间不释放。
- 任务管理器 → “详细信息”页 → 结束所有
Code.exe、Code Helper.exe、node.exe - 再进入
%LOCALAPPDATA%Microsoftscode-cpptools删除整个文件夹 - 重启 VS Code 后,扩展会在你指定的新路径(或默认路径)下重建空缓存,体积从零开始受
C_Cpp.intelliSenseCacheSize约束
真正容易被绕过的点是:你以为关了窗口就结束了,其实 Code Helper 仍在后台维持语言服务——不杀干净,删了也白删。











