electron-vue开发环境内存泄漏问题汇总


Posted in Javascript onOctober 10, 2019

package.json

"dependencies": {
  "vue": "^2.5.16"
 },
 "devDependencies": {
  "ajv": "^6.5.0",
  "babel-core": "^6.26.3",
  "babel-loader": "^7.1.4",
  "babel-plugin-transform-runtime": "^6.23.0",
  "babel-preset-env": "^1.7.0",
  "babel-preset-stage-0": "^6.24.1",
  "babel-register": "^6.26.0",
  "babili-webpack-plugin": "^0.1.2",
  "cfonts": "^2.1.2",
  "chalk": "^2.4.1",
  "copy-webpack-plugin": "^4.5.1",
  "cross-env": "^5.1.6",
  "css-loader": "^0.28.11",
  "del": "^3.0.0",
  "devtron": "^1.4.0",
  "electron": "3.0.0",
  "electron-builder": "^20.19.2",
  "electron-debug": "^1.5.0",
  "electron-devtools-installer": "^2.2.4",
  "file-loader": "^1.1.11",
  "html-webpack-plugin": "^3.2.0",
  "mini-css-extract-plugin": "0.4.0",
  "multispinner": "^0.2.1",
  "node-loader": "^0.6.0",
  "style-loader": "^0.21.0",
  "url-loader": "^1.0.1",
  "vue-html-loader": "^1.2.4",
  "vue-loader": "^15.2.4",
  "vue-style-loader": "^4.1.0",
  "vue-template-compiler": "^2.5.16",
  "webpack": "^4.15.1",
  "webpack-cli": "^3.0.8",
  "webpack-dev-server": "^3.1.4",
  "webpack-hot-middleware": "^2.22.2",
  "webpack-merge": "^4.1.3"
 }

electron测试版本3.0.0, 4.0.0, 4.2.6

问题描述

在开发环境中,修改主进程保存后,每次保存会多出一到两个electron进程,根据群友反馈2.0.8也是存在这个问题的,只是出现的频率较低

排查过程以及解决思路

1、 首先先看了webpack.main.config.js,然而并没有发现有什么异样的地方,配置了只启动一个应用程序,每次退出前也使用app.exit()强制退出,然而并没有任何好转,遂新建一个项目,用来测试
2、 在创建完毕后(electron v4.0.0),发现每次保存并不是都会出现一个新的进程,经过多次测试后,发现问题出在保存完后,主进程未生成成功,然后再次保存,于是进程创建了多次,但是只杀死了最开始的进程,造成内存泄漏。
3、 在dev-runner.js中找到了关于杀死进程的方法

if (electronProcess && electronProcess.kill) {
    manualRestart = true
    process.kill(electronProcess.pid)
    electronProcess = null
    startElectron()

    setTimeout(() => {
     manualRestart = false
    }, 5000)
   }

4、 好吧他是直接通过调用process.kill来杀死进程,然后造成这个问题,遂进行了修改,修改后代码如下,注意引入exec,然后将延时器删除,感觉整个程序的运行速度都快了不少,哈哈哈

if (electronProcess && electronProcess.kill) {
    manualRestart = true
    const pid = electronProcess.pid
    exec(`TASKKILL /F /IM electron.exe`, function (err, data) {
     if (err) console.log(err)
     else console.log('kill pid: ' + pid + ' success!')
     electronProcess = null
     startElectron()
     manualRestart = false
    })
   }

总结

在解决了问题后,去看版本更新记录,在2.0.8-3.0.0的版本更新记录中并没有发现那条更新记录会导致这个问题,时间有限,也没有去看到底在哪个版本后造成这个问题,技艺拙劣,始终没有找到出现的原因

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
在JavaScript中获取请求的URL参数
Dec 22 Javascript
Javascript 面试题随笔
Mar 31 Javascript
鼠标移到导航当前位置的LI变色处于选中状态
Aug 23 Javascript
5个JavaScript经典面试题
Oct 13 Javascript
JavaScript插件化开发教程 (一)
Jan 27 Javascript
JavaScript子窗口调用父窗口变量和函数的方法
Oct 09 Javascript
JavaScript 实现的 zip 压缩和解压缩工具包Zip.js使用详解
Dec 14 Javascript
原生js轮播(仿慕课网)
Feb 15 Javascript
微信小程序url传参写变量的方法
Aug 09 Javascript
react-navigation之动态修改title的内容
Sep 26 Javascript
vue的滚动条插件实现代码
Sep 07 Javascript
jquery html添加元素/删除元素操作实例详解
May 20 jQuery
Vue使用NProgress的操作过程解析
Oct 10 #Javascript
使用 Element UI Table 的 slot-scope方法
Oct 10 #Javascript
使用vscode快速建立vue模板过程详解
Oct 10 #Javascript
浅谈vue3中effect与computed的亲密关系
Oct 10 #Javascript
JavaScript如何把两个数组对象合并过程解析
Oct 10 #Javascript
Node使用Selenium进行前端自动化操作的代码实现
Oct 10 #Javascript
Vue 开发必须知道的36个技巧(小结)
Oct 09 #Javascript
You might like
用PHP实现的四则运算表达式计算实现代码
2011/08/02 PHP
php基于ob_start(ob_gzhandler)实现网页压缩功能的方法
2017/02/18 PHP
jquery和ajax的关系详细介绍
2013/11/29 Javascript
JQuery实现样式设置、追加、移除与切换的方法
2015/06/11 Javascript
详解javascript遍历方式
2015/11/11 Javascript
Bootstrap项目实战之子栏目资讯内容
2016/04/25 Javascript
jQuery插件Flexslider实现图片轮播、图文结合滑动切换效果
2020/04/16 Javascript
jQuery表单对象属性过滤选择器实例详解
2016/09/13 Javascript
JS获取IE版本号与HTML设置IE文档模式的方法
2016/10/09 Javascript
JS中with的替代方法与String中的正则方法详解
2016/12/23 Javascript
详解微信小程序 相对定位和绝对定位
2017/05/11 Javascript
微信小程序点击控件修改样式实例详解
2017/07/07 Javascript
jQuery实现验证表单密码一致性及正则表达式验证邮箱、手机号的方法
2017/12/05 jQuery
Vue+Element实现表格编辑、删除、以及新增行的最优方法
2019/05/28 Javascript
微信小程序拼接图片链接无底洞深入探究
2019/09/03 Javascript
layui关闭弹窗后刷新主页面和当前更改项的例子
2019/09/06 Javascript
Layui弹出层 加载 做编辑页面的方法
2019/09/16 Javascript
[04:29]2016国际邀请赛中国区预选赛Ehome战队教练采访
2016/06/27 DOTA
新手该如何学python怎么学好python?
2008/10/07 Python
Python Property属性的2种用法
2015/06/21 Python
Python HTTP客户端自定义Cookie实现实例
2017/04/28 Python
Python切片工具pillow用法示例
2018/03/30 Python
Python3实现爬虫爬取赶集网列表功能【基于request和BeautifulSoup模块】
2018/12/05 Python
Python CVXOPT模块安装及使用解析
2019/08/01 Python
Jupyter notebook如何修改平台字体
2020/05/13 Python
python使用for...else跳出双层嵌套循环的方法实例
2020/05/17 Python
小程序瀑布流解决左右两边高度差距过大的问题
2019/02/20 HTML / CSS
美国椅子和沙发制造商:La-Z-Boy
2020/10/25 全球购物
成人高等教育毕业生自我鉴定
2013/10/22 职场文书
应届毕业生应聘自荐信范文
2014/02/26 职场文书
群众路线党课主持词
2014/04/01 职场文书
常务副总经理岗位职责
2015/02/02 职场文书
优秀团员个人总结
2015/02/26 职场文书
2015年社区中秋节活动总结
2015/03/23 职场文书
详解如何用Python实现感知器算法
2021/06/18 Python
使用Redis实现点赞取消点赞的详细代码
2022/03/20 Redis