nodejs 设置应用的内存上限 NODE_OPTIONS=--max-old-space-size=8192

NodeJS应用的内存上限

该内存上限由谁决定?

NodeJS启动的应用,内存使用是有上限的。
默认为4GB(不同机器环境可能会有不同)。

那么,如何自己指定这个内存上限呢(我机器配置足够高,想多分配给该NodeJS应用多一些内存)?

NodeJS应用使用的内存上限,从环境变量NODE_OPTIONS中读取参数max-old-space-size的值。
所以修改(指定)该参数的值即可。

如何修改该内存上限?

举个例子,将:

node index.js

修改为:

set NODE_OPTIONS=%NODE_OPTIONS%;--max-old-space-size=8192
node index.js

在启动应用前,编辑一个环境变量NODE_OPTIONS,向其追加一个参数--max-old-space-size,值8192表示8192MB。
(如果该环境变量本来有其他的参数,注意也要加上)。

当然,你有其他多种方式去修改某个环境变量的值。

环境变量的修改方式

Windows 仅当前窗口有效

cmd中执行 set NODE_OPTIONS=--max-old-space-size=8192
当本窗口关闭后,该配置失效。

Windows 永久有效(仅用户级别)

cmd中执行setx NODE_OPTIONS --max-old-space-size=8192
或直接在环境变量窗口中编辑用户级别的环境变量。

命令执行后对本cmd窗口之外的所有环境,即刻生效(本cmd窗口开始运行时,还没配置这个环境变量)。

Windows 永久有效(系统级别)

在环境变量窗口中编辑系统级别的环境变量。新增配置:
name: NODE_OPTIONS
value: --max-old-space-size=8192

类unix系统(Linux/macOS)

export语句
几种配置文件。
组合使用。

通用方式

没谁愿意记那么多命令。

Windows/Linux/MacOS系统里怎么设置环境变量,有没有统一的方法?
没有。
但是后来有人将不同系统之上的操作封装起来,提供了一个NodeJS库 cross-env
用于跨平台设置环境变量

# 全局安装该包(当然你也可以只在当前项目级别安装)
npm i -g cross-env

node index.js
# 改成:
cross-env NODE_OPTIONS=--max-old-space-size node index.js

注意 cross-env xxx=xxx xxx=xxxnode index.js中间是空格,不要加& &&之类的字符(那会导致一开始设置的环境变量在后面的命令中无效,我这样做错过)。

Others

其他相关nodejs参数

--max-http-header-size
--v8-pool-size
--huge-max-old-generation-size
--max-old-space-size

如何用命令行打开用户级别的环境变量编辑窗口?

rundll32.exe sysdm.cpl,EditEnvironmentVariables

# 即
C:\Windows\System32\rundll32.exe C:\Windows\System32\sysdm.cpl,EditEnvironmentVariables
### 解决 Node.js 中 Vite 构建时内存不足的问题 当使用 Vite 进行构建时遇到 `NODE_OPTIONS --max-old-space-size` 的内存问题,通常是因为 JavaScript 堆内存不足以完成构建过程。可以通过调整 Node.js 的堆内存大小来解决问题。 以下是具体的解决方法: #### 方法一:增加 Node.js 的最大堆内存 通过设置环境变量 `NODE_OPTIONS` 来增大 Node.js 的旧生代空间大小。可以在命令行中运行以下命令以临时增加内存限制: ```bash set NODE_OPTIONS=--max-old-space-size=4096 && npm run build ``` 对于 Linux 或 macOS 用户,可以使用以下命令: ```bash export NODE_OPTIONS="--max-old-space-size=4096" && npm run build ``` 如果希望永久生效,可以直接在项目的根目录下创建 `.env` 文件并添加如下内容: ```plaintext NODE_OPTIONS=--max-old-space-size=4096 ``` 此操作会将 Node.js 的最大堆内存扩展到 4GB[^1]。 --- #### 方法二:优化依赖项和清理缓存 有时内存不足可能是由于项目中的某些依赖项过大或者存在冲突引起的。建议执行以下步骤进行排查和修复: 1. **删除 `node_modules` 和 `package-lock.json`** 清理现有的模块安装状态,防止因版本不匹配或其他原因导致的错误。 ```bash rm -rf node_modules package-lock.json ``` 2. **重新安装依赖** 使用以下命令重新安装所有依赖项: ```bash npm install ``` 3. **更新依赖版本** 如果可能的话,尝试升级到最新版的依赖库,尤其是与构建工具链相关的部分(如 Vite、Rollup 等)。这有助于减少潜在的兼容性问题。 --- #### 方法三:检查是否存在其他加载失败的情况 如果仍然无法正常工作,则需进一步确认是否有未找到模块的错误提示(例如 `Error: Cannot find module`),这类问题可能导致进程异常终止从而引发资源泄漏或占用过多内存。针对此类情况可参考以下措施处理: - 若发现类似 `Error: Cannot find module '...'` 错误消息,请按照对应路径手动验证缺失模块的存在与否; - 对于 Vue 项目启动过程中发生的特定模块丢失现象,比如 `'@vue/cli-shared-utils'` 不见了,应先移除整个 `node_modules` 并重试安装流程[^2]。 另外需要注意的是,在 Windows 上偶尔会出现因为多实例同时访问而导致文件锁死的现象,此时重启计算机后再重复上述清除重建动作往往能有效缓解状况。 --- #### 方法四:卸载并重新安装 Node.js 假如以上手段均未能奏效,那么考虑是否由当前使用的 Node.js 版本本身存在问题所引起。推荐前往官方站点下载最新的稳定发行版替换掉现有版本[^4]: 1. 访问 [Node.js 官方网站](https://nodejs.org/) 获取预编译好的安装程序; 2. 执行其中附带的卸载功能彻底消除残留数据; 3. 新一轮定制化部署期间记得挑选适合自己的目标位置存储新装入的内容。 最后别忘了同步刷新全局范围内的 NPM 工具集至相匹配的状态! --- ### 总结 综上所述,面对 Node.js 在利用 Vite 开展大规模生产环境下遭遇的内存瓶颈难题,我们既可以从外部参数调节入手提升可用容量上限,也能深入内部结构层面逐一排除干扰因素直至恢复正常运作水平为止。
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值