` 的解决方案)
一、问题描述最近在使用VS Code Remote SSH开发一个大型 Python 项目时打开工作区后 VS Code 会直接崩溃并弹出如下错误The window terminated unexpectedly (reason: oom, code: -536870904)如下图所示此处可插入 OOM 报错截图一开始怀疑是电脑内存不足但查看 Windows 任务管理器发现内存总容量20 GB已使用约 14 GB剩余可用约 5.5 GB系统本身并没有发生真正的内存耗尽。二、问题分析经过排查发现VS Code 本身没有问题。打开一个空目录可以正常运行只有打开某个特定工作区时才发生 OOM。进一步分析项目目录发现工程结构如下TrackEval │ ├── trackeval/ ├── scripts/ ├── tests/ ├── data/ └── processed_data/其中processed_data/ inference_results/ tracking_result_xxx/ 000001.txt 000002.txt ...包含了大量实验结果文件.txt。这些文件虽然每个都很小但是数量非常多可能达到数十万甚至更多。三、为什么会 OOM打开工作区以后VS Code 并不仅仅是显示文件。它还会同时启动多个后台任务File Watcher监听文件变化Search建立搜索索引Python/Pylance建立代码索引Explorer读取目录树Remote SSH 同步状态对于普通项目这些功能没有任何问题。但是当项目中存在几十万甚至上百万个小文件时File Watcher 会监听大量文件Search 会尝试建立索引Pylance 会扫描 Python 工程Explorer 会读取大量目录。最终导致 VS Code 的 RendererElectron内存不断增长最后触发OOM (Out Of Memory)四、解决方案4.1 核心思想代码需要索引数据不需要索引。例如TrackEval ├── trackeval ← 代码 ├── scripts ← 代码 ├── tests ← 代码 ├── data ← 数据 └── processed_data ← 实验结果其中trackevalscripts需要智能提示。而dataprocessed_data通常只是程序读取的数据。因此可以告诉 VS Code不要扫描这两个目录。4.2 修改.vscode/settings.json在项目目录下创建.vscode/settings.json写入如下配置{// // 文件监视不监听数据目录// files.watcherExclude:{**/data/**:true,**/processed_data/**:true},// // 全局搜索不搜索数据目录// search.exclude:{**/data/**:true,**/processed_data/**:true},// // Pylance不分析数据目录// python.analysis.exclude:[**/data/**,**/processed_data/**],// 只分析打开的文件python.analysis.diagnosticMode:openFilesOnly,// 关闭整个工程索引python.analysis.indexing:false}保存后重新连接 Remote SSH 或重新打开 VS Code。4.3 各配置项说明1. files.watcherExcludefiles.watcherExclude:{**/processed_data/**:true}作用不监听目录中的文件变化大幅减少 File Watcher 的压力。适用于数据集日志推理结果模型权重2. search.excludesearch.exclude:{**/processed_data/**:true}作用按下Ctrl Shift F时不会扫描该目录。搜索速度明显提高。3. python.analysis.excludepython.analysis.exclude:[**/processed_data/**]作用告诉 Pylance不要分析这些目录。避免建立索引类型推断自动补全4. python.analysis.diagnosticModepython.analysis.diagnosticMode:openFilesOnly默认情况下Pylance 会分析整个工作区。改成openFilesOnly以后只分析当前打开的 Python 文件。可以显著降低内存占用。5. python.analysis.indexingpython.analysis.indexing:false关闭整个工程索引。对于大型 AI 项目通常不会影响日常开发。五、解决效果修改配置后✅ VS Code 不再出现The window terminated unexpectedly (reason: oom)同时工作区仍然可以正常打开dataprocessed_data两个目录依然保留在资源管理器中可以正常浏览。代码补全、跳转定义等功能也不会受到影响因为代码目录仍然会正常分析。六、适用场景本文方法适用于深度学习项目大模型项目LLM、VLM多目标跟踪MOT目标检测图像分割视频分析海量实验结果目录海量日志文件Remote SSH 开发特别适合下面这种工程project/ │ ├── src/ ├── scripts/ ├── checkpoints/ ├── datasets/ ├── logs/ ├── outputs/ ├── results/ └── inference_results/其中checkpointsdatasetsoutputsresultslogs都可以考虑加入files.watcherExcludesearch.excludepython.analysis.exclude七、总结对于大型 AI 项目来说真正需要 VS Code 分析的是代码而不是数据。如果项目中包含大量数据集、推理结果、日志文件或模型权重建议将这些目录排除出文件监听、搜索和 Python 索引范围。这样既能保留完整的项目目录结构又能有效降低 VS Code 的资源占用避免因海量文件导致的OOM (Out of Memory)崩溃问题同时提升搜索、索引和工作区加载速度。