node内存溢出

node内存溢出

WangScaler: 一个用心创作的作者。

声明:才疏学浅,如有错误,恳请指正。

一、问题重现

今天在vscode中运行代码的时候,出现以下错误 可以很明显的能看出是内存溢出了,但是我们又不得不运行我们的项目,那么该怎么解决这个问题呢?

解决办法

方案一

执行node命令set NODE_OPTIONS=--max_old_space_size=8192。这个是临时生效,当电脑重启之后就会失效。下边的方案二是永久提升内存大小。相对来说比较麻烦,选择哪种方案,看你自己的实际需求吧。

方案二

  • 1、首先安装依赖npm install increase-memory-limit有的教程里写的直接运行increase-memory-limit即可运行程序,我没有进行测试,估计这种方式可能取消了node对内存的限制?我采取的办法是提升了node对内存的最大值的限制。如下方案继续执行。

  • 2、运行npm install cross-env

  • 3、在项目中启动命令处添加

js 复制代码
    "scripts": {  
        "fix-memory-limit": "cross-env LIMIT=4096 increase-memory-limit"  
    }
  • 4、执行命令npm run fix-memory-limit

  • 5、恢复"scripts"中的代码,也就是移除第三步中的代码

  • 6、【先看注意】在node_module下的.bin文件夹中查替换%_prog%%_prog%

  • 7、重启服务即可。

注意

第六步,网上说mac不需要就能直接执行,就可以运行程序。但是windows下会报错提示。 报错信息如下

js 复制代码
"node --max-old-space-size=10240"' 不是内部或外部命令,也不是可运行的程序

问题原因

起初,node为了防止GC时间太长,限制了占用的最大内存。

在v12.x 之前设置了一个默认老生代内存最大值,64位系统中为大约1.4G,32位为大约700M。在v12以后,将根据可用内存分配老生代大小,取消了限制。

这一块感觉开始也不合理,为了控制GC的时间,导致我们的程序无法运行。我们在研发的过程,也要注重对内存的使用。那么怎么减少对内存的使用呢?

优化对内存的使用

  • 1、避免或减少使用watcher

  • 2、减少v-if。因为v-if切换的时候会重新创建删除DOM

  • 3、使用懒加载和异步组件来加载组件

  • 4、避免使用全局变量来记录缓存的数据

来都来了,点个赞再走呗!

关注WangScaler,祝你升职、加薪、不提桶!

相关推荐
小小小小宇1 分钟前
前端 Redux applyMiddleware 中间件链原理
前端
英俊潇洒美少年22 分钟前
Vue 生产环境打包:SourceMap、压缩、混淆、Gzip、多环境配置 企业级最佳实践
前端·javascript·vue.js
2601_9577867730 分钟前
企业矩阵运营的“三段论“:管号、产内容、获线索——全链路系统的价值拆解
java·前端·矩阵·多平台管理
城市的稻草人VS1 小时前
rust【日志库】
前端·rust
问心无愧05131 小时前
ctf show web 入门258
android·前端·笔记
qq_2518364571 小时前
基于java Web 耗材购置与维修网络申报审批系统设计与实现
java·开发语言·前端
UXbot1 小时前
企业AI开发工具:界面自动生成与前端代码交付能力详解
前端·人工智能·交互·web app·ui设计
专业技术员!!!!1 小时前
陪玩系统前端核心功能详解|线上线下陪玩平台开发方案
前端·陪玩系统·电竞陪玩
英俊潇洒美少年1 小时前
前端主流状态管理全家桶:Vuex/Pinia/Redux/Zustand/MobX 从入门到原理、实战、面试全解
前端·面试·职场和发展
Maddie_Mo1 小时前
Pi Agent Web 使用教程:把本地 Pi Coding Agent 搬进浏览器
android·java·前端·人工智能·ai