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实现单继承和多继承的简单方法
Mar 29 Javascript
js如何获取file控件的完整路径具体实现代码
May 15 Javascript
jquery实现简单的拖拽效果实例兼容所有主流浏览器(优化篇)
Jun 28 Javascript
js调用打印机打印网页字体总是缩小一号的解决方法
Jan 24 Javascript
javascript 控制input只允许输入的各种指定内容
Jun 19 Javascript
JavaScript实现找出字符串中第一个不重复的字符
Sep 03 Javascript
js实现鼠标移到链接文字弹出一个提示层的方法
May 11 Javascript
jQuery插件FusionCharts绘制的3D双柱状图效果示例【附demo源码】
Apr 20 jQuery
Angualrjs 表单验证的两种方式(失去焦点验证和点击提交验证)
May 09 Javascript
JavaScript实现电灯开关小案例
Mar 30 Javascript
vue实现短信验证码输入框
Apr 17 Javascript
js实现移动端轮播图滑动切换
Dec 21 Javascript
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/06/09 PHP
PHP判断网络文件是否存在的方法
2015/03/12 PHP
php查询mysql数据库并将结果保存到数组的方法
2015/03/18 PHP
php使用file函数、fseek函数读取大文件效率对比分析
2016/11/04 PHP
javascript实现动态CSS换肤技术的脚本
2007/06/29 Javascript
菜鸟javascript基础整理1
2010/12/06 Javascript
JavaScript ( (__ = !$ + $)[+$] + ({} + $)[_/_] +({} + $)[_/_] )
2011/02/25 Javascript
JavaScript实现鼠标滑过处生成气泡的方法
2015/05/16 Javascript
BootStrap下拉框在firefox浏览器界面不友好的解决方案
2016/08/18 Javascript
JavaScript实现页面无操作倒计时退出
2016/10/22 Javascript
JavaScript无阻塞加载和defer、async详解
2017/02/26 Javascript
JS三目运算(三元运算)方法详解
2017/03/01 Javascript
基于vue的fullpage.js单页滚动插件
2017/03/20 Javascript
VUE 更好的 ajax 上传处理 axios.js实现代码
2017/05/10 Javascript
详解vuex 中的 state 在组件中如何监听
2017/05/23 Javascript
Bootstrap + AngularJS 实现简单的数据过滤字符查找功能
2017/07/27 Javascript
实现高性能javascript的注意事项
2019/05/27 Javascript
vue2 拖动排序 vuedraggable组件的实现
2019/08/08 Javascript
vue 实现购物车总价计算
2019/11/06 Javascript
d3.js 地铁轨道交通项目实战
2019/11/27 Javascript
小程序跳转到的H5页面再跳转回跳小程序的方法
2020/03/06 Javascript
[14:57]DOTA2 HEROS教学视频教你分分钟做大人-幽鬼
2014/06/13 DOTA
[57:47]Fnatic vs Winstrike 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
Python实现动态添加类的属性或成员函数的解决方法
2014/07/16 Python
Django使用Channels实现WebSocket的方法
2019/07/28 Python
Python测试Kafka集群(pykafka)实例
2019/12/23 Python
详解Python中的Lock和Rlock
2021/01/26 Python
美国创意礼品网站:UncommonGoods
2017/02/03 全球购物
三星印度官网:Samsung印度
2019/08/03 全球购物
一些Unix笔试题和面试题
2013/01/22 面试题
UNIX文件系统常用命令
2012/05/25 面试题
创建精神文明单位实施方案
2014/03/08 职场文书
幼儿园开学寄语
2014/04/03 职场文书
《记金华的双龙洞》教学反思
2014/04/19 职场文书
物理分数没达标检讨书
2014/09/13 职场文书
整改通知书格式
2015/04/22 职场文书