发现windows10 explorer占用太多内存,而且还在不停的上涨....
于是关闭了打开的explorer,这时候内存不上涨了,但是也不下跌!
让小浣熊帮我找找原因:
explorer 在今天 21:43 启动,1 小时就涨到 10 GB,而且只加载了 1 个非系统模块(OneDrive 的 3 MB),说明泄漏在自身堆里,不是第三方 DLL 注入。我采一下增长速率和句柄对象,确认是泄漏还是缓存。
内存现在已经停止增长(50 秒内工作集稳定在 10033.8 MB,CPU 几乎不动),说明它不是正在泄漏,而是之前某个操作把它一次性顶上去了。我看看整机内存分布和当时发生了什么。
找到了几个关键线索。继续确认 explorer 当前打开了哪些文件夹(这直接决定它缓存了多少东西)。
explorer 现在没有任何打开的文件夹窗口,却仍占着 9.4 GB------这是最关键的异常点。我把几个第三方右键扩展的 DLL 解析出来看看。
explorer 无窗口却占 9.4 GB,而且 OneDrive 进程根本没在跑,但它的 shell 扩展却挂在 explorer 里。另外还发现两个"孤儿"右键菜单注册。我再确认几个点。
explorer 无窗口、无 GDI/USER 泄漏、CPU 只用了 18 分钟,却握着 10 GB------这不像正常缓存。我再确认两件事:它是否还在涨、以及 OneDrive 的云占位文件情况。
内存完全冻结在 9.42 GB,不涨不落,CPU 也不动------句柄、线程、GDI/USER 全部正常。这不是"正在泄漏",而是一次性卡死的分配。最后确认几个点。
内存 9.4 GB 完全冻结、无窗口、CPU 不动------这很符合"explorer 一次性持有了某个大对象没释放"。我验证一下剪贴板这个经典嫌疑点。
明确的证据链已经出来了。最后补两个数据点。
内存冻结、无窗口、虚拟地址空间却占了 2 TB ------ 这是地址空间泄漏的典型特征。再确认最后几个点。
内存冻结、无窗口、虚拟地址空间却膨胀到 2 TB ------ 我把最后两个疑点确认掉。
我有了足够的证据。最后确认一下 Z: 盘(你的 TypedPaths 里有大量 Z: 路径)和提交内存情况。
结论
是的,而且严重到不正常。explorer.exe 一个人吃掉了整机一半内存,并且已经"冻结"了------不会自己降下来。
| 指标 | 实测值 | 正常参考 |
|---|---|---|
| 工作集 | 9,420 MB | 100--500 MB |
| 私有内存 | 10,414 MB | 80--400 MB |
| 虚拟地址空间 | 2,113,447 MB(≈2 TB) | 数百 MB |
| 句柄 / 线程 / GDI / USER | 2638 / 42 / 260 / 307 | 全部正常 |
| 累计 CPU 时间 | 1,088 秒 | 不是 CPU 问题 |
| 打开的资源管理器窗口 | 0 个 | ← 关键异常 |
整机 20.5 GB,只剩 3.98 GB 可用;其余进程加起来才 6~7 GB。
我做的排查
1. 先排除了泄漏和句柄堆积
连续 5 分钟采样,内存死死卡在 9,420 MB 不动、CPU 增量为 0、线程 46 个全是 Wait/UserRequest。这不是"正在泄漏",而是一次性分配后不再释放------所以它不会自愈。
2. 排除了第三方 DLL 注入和 GDI 泄漏
explorer 加载 305 个模块,非 Windows 目录的只有 1 个:FileSyncShell64.dll(OneDrive,3 MB)。GDI/USER 对象数完全正常。
3. 找到了三个真正的元凶
① Z: 盘是 VirtualBox 共享文件夹(主因)
Z: → \\VBoxSvr\Downloads (VirtualBox Shared Folders, 359.7 GB)
你的「运行」历史 TypedPaths 里 8 条路径有 7 条指向 Z: ,包括 Z:\kaggle\working\duan\tools\ai_copilot\output 这类深层大目录。
VBox 共享文件夹是走 SMB 重定向的虚拟化转发文件系统,性能极差。explorer 在这种路径下做图标/缩略图/元数据缓存时,缓存会异常膨胀且不随窗口关闭释放------这正好解释了"窗口一个都没有、内存却顶到 10 GB"。
② Downloads\chatbi 里有 17,805 个文件
其中 16,271 个是 .light 文件 (你自研 light 语言的积木块)、879 个 .py。这是典型的海量小文件"缓存炸弹"目录,而且它在 Downloads------会被快速访问/最近使用反复扫描。
C:\Users\skywalk\Downloads\chatbi → 17,805 个文件
└─ chatbi\light\积木库\blocks\... 单个目录 400~604 个 .light
③ OneDrive 的"孤儿"shell 扩展
OneDrive 进程根本没在运行 ,但它在 explorer 里注册了 7 个图标叠加处理器 + 7 个 FileSyncShell 。而 C:\Users\skywalk\OneDrive 目录里只有 1 个文件------你明显没用它。每次枚举文件都要回调这些已失效的扩展。
④ 火绒的 2 个右键菜单扩展 (HRShell.dll / HrShredShell.dll)挂在所有文件对象上,属次要放大因素。
立即处理(一条命令回收 10 GB)
Stop-Process -Name explorer -Force; Start-Sleep 3; if (-not (Get-Process explorer -ErrorAction SilentlyContinue)) { Start-Process explorer }
效果:立即回收约 9.4 GB。代价:所有资源管理器窗口关闭,未完成的"另存为/打开"对话框会消失(任务栏会闪一下)。不影响 WorkBuddy、Doubao、box-agent 等其他程序。
治本(按收益排序)
1. 别在资源管理器里浏览 Z: 盘 ------ 这是根因
net use Z: /delete
以后要访问 VirtualBox 共享,用 \\VBoxSvr\Downloads 直连,或把文件先复制到本地再操作。这是投资回报最高的一步。
2. 把 chatbi 移出 Downloads
Move-Item "$env:USERPROFILE\Downloads\chatbi" "G:\dswork\chatbi"
16,000+ 个 .light 小文件不该待在 Downloads。
3. 处理 OneDrive(你只有 1 个文件在里面,进程还没跑)
设置 → 应用 → 找到 Microsoft OneDrive → 卸载;或至少从启动项移除,消除 7 个失效图标叠加。
4. 关掉快速访问的"最近使用文件/常用文件夹"
资源管理器 → 查看 → 选项 → 隐私:取消勾选这两项,点"清除"。减少 shell 追踪负担。
5. 顺手注意:C 盘只剩 41.9 GB
补充一点 :WSearch(Windows 搜索索引)是 Stopped + Disabled 状态,所以不是索引服务的锅。你的系统补丁停留在 19041.6466,离最新还有距离,explorer 的部分已知内存问题在新版里有修复。
{"action":"open_settings","params":{"tab":"onboarding"},"display_text":"把「不自动执行系统变更」等偏好记到个人记忆里,下次诊断我会按你的习惯来。"}
实践
我到powershell里执行这句,果然内存释放了
Stop-Process -Name explorer -Force; Start-Sleep 3; if (-not (Get-Process explorer -ErrorAction SilentlyContinue)) { Start-Process explorer }