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 解疑
Nov 11 Javascript
javascript OFFICE控件测试代码
Dec 08 Javascript
Jquery带搜索框的下拉菜单
May 06 Javascript
jQuery实现鼠标滑过点击事件音效试听
Aug 31 Javascript
js如何实现淡入淡出效果
Nov 18 Javascript
实例解析jQuery中proxy()函数的用法
May 24 Javascript
jQuery中的select操作详解
Nov 29 Javascript
Angular的自定义指令以及实例
Dec 26 Javascript
JS路由跳转的简单实现代码
Sep 21 Javascript
angular.js4使用 RxJS 处理多个 Http 请求
Sep 23 Javascript
为输入框加入数字js校验代码分享
Nov 02 Javascript
p5.js实现简单货车运动动画
Oct 23 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
Discuz!下Memcache缓存实现方法
2010/05/28 PHP
php下正则来匹配dede模板标签的代码
2010/08/21 PHP
在PHP中使用curl_init函数的说明
2010/11/02 PHP
利用PHP实现智能文件类型检测的实现代码
2011/08/02 PHP
Laravel搭建后台登录系统步骤详解
2016/07/26 PHP
php遍历、读取文件夹中图片并分页显示图片的方法
2016/11/15 PHP
PHP正则删除HTML代码中宽高样式的方法
2017/06/12 PHP
详解关于php的xdebug配置(编辑器vscode)
2019/01/29 PHP
php变量与字符串的增删改查操作示例
2020/05/07 PHP
JQUERY THICKBOX弹出层插件
2008/08/30 Javascript
javascript getElementsByName()的用法说明
2009/07/31 Javascript
突发奇想的一个jquery插件
2010/11/19 Javascript
Javascript selection的兼容性写法介绍
2013/12/20 Javascript
JS取request值以及自动执行使用示例
2014/02/24 Javascript
jQuery 过滤方法filter()选择具有特殊属性的元素
2014/06/15 Javascript
兼容最新firefox、chrome和IE的javascript图片预览实现代码
2014/08/08 Javascript
实现JavaScript的组成----BOM和DOM详解
2016/05/18 Javascript
js css3实现图片拖拽效果
2017/03/04 Javascript
解决vue组件中使用v-for出现告警问题及v for指令介绍
2017/11/11 Javascript
基于 Vue 实现一个酷炫的 menu插件
2017/11/14 Javascript
jQuery实现简单的Ajax调用功能示例
2019/02/15 jQuery
vue 实现搜索的结果页面支持全选与取消全选功能
2019/05/10 Javascript
vuex管理状态 刷新页面保持不被清空的解决方案
2019/11/11 Javascript
详解微信小程序之提高应用速度小技巧
2020/01/07 Javascript
JavaScript图片旋转效果实现方法详解
2020/06/28 Javascript
vue+animation实现翻页动画
2020/06/29 Javascript
[08:42]DOTA2每周TOP10 精彩击杀集锦vol.2
2014/06/25 DOTA
Python虚拟环境项目实例
2017/11/20 Python
python使用Qt界面以及逻辑实现方法
2019/07/10 Python
Python的PIL库中getpixel方法的使用
2020/04/09 Python
CSS3 实现侧边栏展开收起动画
2014/12/22 HTML / CSS
营销与策划个人求职信
2013/09/22 职场文书
升学宴学生致辞
2015/09/29 职场文书
人民币使用说明书
2019/04/17 职场文书
Go标准容器之Ring的使用说明
2021/05/05 Golang
python模拟浏览器 使用selenium进入好友QQ空间并留言
2022/04/12 Python