Cursor 曾占用 50GB 内存——罪魁祸首是一个嵌套的 `.cursor` 文件夹
最近在运行一个 Next.js 应用时,我遇到了一个相当离谱的问题。我的 Mac 开始严重卡顿,Activity Monitor(活动监视器)显示:
- Cursor:50GB+ 内存
- Chrome:16GB+ 内存
起初我以为应用存在内存泄漏。我检查了常见的疑点:
- React 渲染循环
- 没有清理的
useEffect钩子 - 没有清理的定时器和监听器
- 过多的控制台日志输出
- 大型客户端渲染
- Next.js 缓存问题
我还清理了 .next 目录、重启了开发服务器、重启了 Cursor,并检查了异常大的文件。但这些都没能解决问题。
实际原因
最终,我注意到 .cursor 目录嵌套在了项目内部,而不是位于仓库根目录。它的结构大致如下:
my-project/
├── app/
│ └── some-folder/
│ └── .cursor/
├── components/
├── package.json
└── next.config.ts
而正确的位置应该是:
my-project/
├── .cursor/
├── app/
├── components/
├── package.json
└── next.config.ts
我完全不知道它是怎么跑到那里去的。我把嵌套的 .cursor 文件夹移回项目根目录,完全重启了 Cursor,内存使用量立刻恢复正常。这是唯一有效的更改。
为什么花了这么久才找到原因
重启 Cursor 没有帮助,因为它重新打开了同一个项目,而那个放错位置的目录依然存在。应用本身看起来也很可疑,因为 Chrome 也消耗了大量内存,所以我先是花了时间检查 React 和 Next.js。最终,问题并非渲染循环或某个深藏的应用程序 bug,而是一个隐藏文件夹放错了位置。
快速检查
在项目根目录运行:
find . -type d -name ".cursor"
对于普通的单项目仓库,你通常期望看到:
./.cursor
如果结果很深,就值得调查了。请小心 monorepo(单体仓库),因为嵌套配置可能是有意为之,不要盲目移动任何东西。
修复方法
- 找到放错位置的
.cursor目录。 - 将其移动到仓库根目录。
- 完全退出 Cursor。
- 重新打开项目。
- 再次检查内存使用情况。
在我的情况下,这样操作就足够了。