NextJs v13中next-router-worker内存过高致M1 Mac自动锁屏求助
Next.js 13 next-router-worker 进程内存过高导致M1 Mac黑屏锁屏的原因及解决方案
问题原因分析
next-router-worker 是Next.js 13 App Router架构中负责路由匹配、预加载等核心逻辑的后台进程,在M1 Mac上出现2GB左右的异常内存占用,主要原因如下:
- 框架版本bug:Next.js 13早期版本(尤其是v13.0-v13.3)的App Router在ARM架构设备上存在内存分配不合理的问题,路由预加载逻辑未针对M1/M2的内存管理做优化,导致进程持续占用大量内存。
- Node.js兼容性问题:部分旧版Node.js(如16.x早期版本)对ARM架构的内存管理支持不完善,和Next.js 13的交互过程中容易出现内存占用异常。
- 开发模式特性放大:开发模式下Next.js会启用热重载、调试监控等功能,
next-router-worker会加载更多辅助逻辑,内存占用本就比生产模式高,但2GB属于超出正常范围的异常情况,本质还是版本适配问题。
是否属于操作失误?
从你新建模板项目仍能复现问题的情况来看,这不是你的操作失误,属于框架或环境的兼容性问题,和代码编写、项目配置无关。
解决方案
- 升级Next.js到最新稳定版:官方在v13.4及后续版本中修复了大量App Router的内存泄漏和占用过高问题,升级后内存占用会回到正常范围(通常在几百MB以内)。
- 更换Node.js版本:建议使用Node.js 18.x LTS版本,它对M1/M2的ARM架构支持更成熟,能有效减少内存异常占用。
- 临时缓解方案:开发过程中如果内存占用过高导致设备卡顿,可以手动杀掉
next-router-worker进程,Next.js会自动重启它;也可以在next.config.js中临时关闭路由预加载:
/** @type {import('next').NextConfig} */ const nextConfig = { experimental: { routerPrefetch: false, }, } module.exports = nextConfig
注意:关闭预加载会影响开发时的路由体验,仅作为临时应急方案。

内容的提问来源于stack exchange,提问作者Sahil Bhor
相关产品推荐
相关产品推荐

