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 相关文章推荐
js写一个字符串转成驼峰的实例
Jun 21 Javascript
jquery validate添加自定义验证规则(验证邮箱 邮政编码)
Dec 04 Javascript
28个常用JavaScript方法集锦
Jan 14 Javascript
javascript实现tab切换特效
Nov 12 Javascript
JS实现的手机端精简幻灯片效果
Sep 05 Javascript
jQuery实现表格与ckeckbox的全选与单选功能
Nov 24 Javascript
JavaScript实现经典排序算法之插入排序
Dec 28 Javascript
Vue学习之路之登录注册实例代码
Jul 06 Javascript
详解JSONObject和JSONArray区别及基本用法
Oct 25 Javascript
Vue的watch和computed方法的使用及区别介绍
Sep 06 Javascript
QRCode.js二维码生成并能长按识别
Oct 16 Javascript
JS/HTML5游戏常用算法之碰撞检测 包围盒检测算法详解【凹多边形的分离轴检测算法】
Dec 13 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+ajax实现无刷新动态加载数据技术
2015/04/28 PHP
PHP数组函数array_multisort()用法实例分析
2016/04/02 PHP
PHP编写daemon process 实例详解
2016/11/13 PHP
PHP面相对象中的重载与重写
2017/02/13 PHP
Mac系统完美安装PHP7详细教程
2017/06/06 PHP
用javascript实现页面打印的三种方法
2007/03/05 Javascript
SyntaxHighlighter代码加色使用方法
2008/09/07 Javascript
js 获取浏览器高度和宽度值(多浏览器)
2009/09/02 Javascript
Javascript绝句欣赏 一些经典的js代码
2012/02/22 Javascript
setInterval,setTimeout与jquery混用的问题
2013/04/08 Javascript
javascript获取鼠标位置部分的实例代码(兼容IE,FF)
2013/08/05 Javascript
JS测试显示屏分辨率以及屏幕尺寸的方法
2013/11/22 Javascript
javascript数组去重方法终极总结
2014/06/05 Javascript
实例解析jQuery插件EasyUI最常用的表单验证规则
2015/11/29 Javascript
vue双向数据绑定原理探究(附demo)
2017/01/17 Javascript
js常用DOM方法详解
2017/02/04 Javascript
js通过Date对象实现倒计时动画效果
2017/10/27 Javascript
JS实现点击拉拽轮播图pc端移动端适配
2018/09/05 Javascript
vue项目中将element-ui table表格写成组件的实现代码
2019/06/12 Javascript
JS实现水平遍历和嵌套递归操作示例
2019/08/15 Javascript
微信小程序实现点击按钮后修改颜色
2019/12/05 Javascript
适用于 Vue 的播放器组件Vue-Video-Player操作
2020/11/16 Javascript
Python将xml和xsl转换为html的方法
2015/03/10 Python
Python2实现的图片文本识别功能详解
2018/07/11 Python
python单线程下实现多个socket并发过程详解
2019/07/27 Python
pytorch torch.expand和torch.repeat的区别详解
2019/11/05 Python
python tornado使用流生成图片的例子
2019/11/18 Python
python自动化测试三部曲之unittest框架的实现
2020/10/07 Python
荷兰网上药店:Drogisterij.net
2019/09/03 全球购物
Stührling手表官方网站:男女高品质时尚手表的领先零售商
2021/01/07 全球购物
大四本科生的自我评价
2013/12/30 职场文书
给老婆的搞笑检讨书
2014/01/12 职场文书
2014年五四青年节演讲比赛方案
2014/04/22 职场文书
三八红旗集体先进事迹材料
2014/05/22 职场文书
卫生院健康教育实施方案
2014/06/07 职场文书
政风行风评议工作总结
2014/10/21 职场文书