linux vue node占用内存过大,vue 大型应用内存泄漏改造经验
VUE项目内存泄漏:
场景1:页面结构复杂,内嵌子组件数量较多
场景2:高频使用(切换路由导致页面组件销毁创建过多)
结果:页面卡顿且浏览器窗口占用内存较高
检测:
相信不少前端开发在界面结构复杂的VUE大项目或者高频使用的VUE项目上,也曾遇到页面使用过程中卡顿问题,通常打开浏览器窗口任务管理器,查询当前窗口所占用内存是否很高。
浏览器运行使用的JS内存(仅指JS堆栈内存,见浏览器窗口任务管理器 【JavaScript使用的内存】为2G,当超过2G浏览器就会崩溃,而 【窗口占用内存】 包含了浏览器自身的部分,具体看电脑配置能承受多少,比如Mac笔记本,【窗口占用内存】18G,【JavaScript使用的内存】1.7G浏览器依然能承受,小卡顿,多次测试结果为【JavaScript使用的内存】1.8G的时候崩溃。一般配置的电脑(注意考虑的是用户群体)【窗口占用内存】1G多久会明显卡顿,所以当你项目遇到卡顿问题时候,请查看此项,另外还可以用浏览器打印堆栈内存快照,会发现闭包数量惊人,高达上百万,这说明已经存在较为严重的内存泄漏问题
该问题最终的解释可能如还未发布的VUE 3+ 修复说明,下图:
此前接手一个项目,各种折腾各种尝试,花了一个多月,虽优化了一部分写法,翻遍很多网站,类似问题也很多,但没有一个靠谱的方案,最后解决方案(只花了一个周,也就每个页面拆除一个入口js文件):把路由去掉,把单页面入口打包改成了每个页面(原路由对应页面)一个入口打包(即是每个页面都对应了一个html,和相关的VUE依赖包),每次点击导航菜单是都在界面插入一个iframe,并打开对应界面,这样不仅能避免了页面组件过多的销毁-渲染,模拟成了浏览器多窗口模式,对于很多后台管理系统,也满足了多页面切换不刷新保存条件的需求,也能在改造过程中发现了代码拆分、移植时,哪些写法比较阻碍进度,对优化代码有一定帮助。
针对上述改造方案打包需要注意的就是解决node服务内存问题,默认32位系统0.7G左右,64位系统1.4G左右,多入口打包导致node运行内存需求较大,针对vue-cli 3+的,只需要找到node_modules/@vue/cli-service/bin/vue-cli-service.js ,顶部有行代码 #!/usr/bin/env node ,在其后面手动添加 --max_old_space_size=4096 , 4096自行修改,即node服务能占用的最大内存,针对vue-cli 3以上,很多网友使用插件什么写入配置的存在问题,--max_old_space_size=4096后面几项是下划线,遇到插件写入中杠的无效,本方法亲测结果。
希望对现有VUE项目遇到内存泄漏问题的朋友提供改造帮助。
linux vue node占用内存过大,vue 大型应用内存泄漏改造经验相关推荐
- 计算机内存多大够用,内存多大才够用?谈谈内存占用的那些秘密
[PConline 评测]众所周知,不管是1333还是1600甚至2133 MHz,内存带宽已经不是系统的瓶颈(APU用户除外),真正的瓶颈在硬盘,相比于内存以GB/s为单位的带宽传输速度,硬盘以MB ...
- 台式计算机内存多大算好些,台式电脑内存多大合适_台式电脑硬盘多大合适
2016-12-11 16:44:06 你好!很高兴为你解答,升级到4G比较合适,因为单条2G的内存条性价比较高,4G的有点小贵.另外玩游戏的时候,可以适当调整下游戏参数,对画质.光影效果的各种参数调 ...
- 公司网站服务器内存多大合适,一般服务器内存多大合适
一般服务器内存多大合适 内容精选 换一换 JVM在执行Java程序时会把它所管理的内存划分为若干个不同的运行时数据区域,主要包括:程序计数器.方法区.虚拟机栈.本地方法栈和堆:程序计数器可以看作时当前 ...
- 电脑是内存容量大的好处 电脑内存影响速度吗
电脑是内存容量大有哪些好处 内存是计算机中重要的部件之一,它是与cPu进行沟通的桥梁. 计算机中所有程序的运行都是在内存中进行的,因此内存的性能对计算机的影响非常大. 内存(memory)也被称为内存 ...
- 仿美团外卖的全栈项目(vue+node+mongodb)带支付-大三求实习
关于 2019届大三学生,前段时间一直想一个人单独开发一个较为完整的项目,在众多应用中,考虑之后选择了美团外卖来模仿,这段时间就利用课余时间进行开发,前端用vue+vuex+vue-router+ax ...
- oracle12cnolog,oracle12c 服务占用内存太大,oracle调整内存解决方法
直接通过sqlplus命令行处理: 1.查看当前oracle内存占用情况: C:\Users\Administrator>sqlplus /nolog SQL*Plus: Release 12. ...
- linux x虚拟机占用硬盘太大,解决kvm虚拟机qcow2格式磁盘文件比实际空间占用大的问题 | 转 | leon的博客...
在基于qcow2格式的虚拟机中进行删除文件操作后,物理磁盘文件并不会变小.可以用以下方法对磁盘文件瘦身. linux客户机 1.使用dd命令将客户机未使用的磁盘空间用0填满 $dd if=/dev/z ...
- vue+node.js+mysql项目搭建
前言 用vue搭建前端页面.用node开发后端接口.数据库用mysql 可行性分析 缺点: nodejs单线程,不能做cpu密集型操作,导致时间片不能释放,阻塞后面的任务. nodejs可靠性比较低, ...
- linux怎么看系统内存多大内存频率,linux 系统管理中的查看内存插槽数最大容量和频率...
Linux 查看内存的插槽数,已经使用多少插槽.每条内存多大,已使用内存多大 1.dmidecode|grep -P -A5 "Memory\s+Device"|grep Size ...
最新文章
- 数字化转型难?那是你没搞懂这5个关键点
- mysql单实例多数据库_MySQL单台服务器跑多个实例子详解
- vs2005下,回发或回调参数无效的解决方法
- Java代码实现“年-月-日 上午/下午时:分:秒”
- 学校图书借阅管理系统(MySQL)
- 应用宝上架审核要求_应用宝应用市场APP上架首发申请
- 黄金分割数0.618与美学有重要的关系。舞台上报幕员所站的位置大约就是舞台宽度的0.618处
- 使用 Let‘s Encrypt 为 Zimbra-8.8.15 安装可信任的SSL证书
- 8088CPU有多少根数据线和地址线?为什么8根数据线却说是16位数据线?
- 技术分享1: jinkens构建Android工程,并上传到蒲公英平台
- 《大话脑科学》之:熟练掌握十门外语之从入门到放弃之语言相关ERP
- 数据可视化——R语言绘制散点相关图并自动添加相关系数和拟合方程
- CSMA/CA基本原理
- ROS集成开发环境 --- RoboWare(安装及学习笔记)
- 【腾讯WeTest干货分享】高并发性能调试经验分享
- 【数据说第十二期】如何在留存数据中,找到业务的提升点?
- 二维平面多点电荷电力线与等位面及三维空间多点电荷电力线的计算机仿真
- Python操作邮箱发送邮件(网易邮箱)
- 游戏辅助原理与制作02-植物大战僵尸01-阳光基址
- ipfs 云服务器_图们时空云,ipfs服务器
热门文章
- Taro+react开发(30)引入静态资源地址
- react学习(73)--子组件this
- [html] iframe父页面如何获取子页面的元素?
- [html] 可替换元素和不可替换元素有什么不同的特点?
- [html] Ajax与Flash的优缺点分别是什么?
- 前端学习(2886):如何短时间内实现v-for 组件化设计方案
- [css] 举例说明在css3中怎么实现背景裁剪?
- [css] flex与其他有什么不同,用它有什么好处?
- 前端学习(2739):重读vue电商网站49之第三方库使用CDN
- 前端学习(2376):项目初始化