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 相关文章推荐
jQuery中选择器小问题(新人难免遇到)
Mar 31 Javascript
深入探讨JavaScript String对象
Mar 09 Javascript
JavaScript中闭包的写法和作用详解
Jun 29 Javascript
关于Jquery中的事件绑定总结
Oct 26 Javascript
jQuery实现用户信息表格的添加和删除功能
Sep 12 jQuery
trackingjs+websocket+百度人脸识别API实现人脸签到
Nov 26 Javascript
详解js创建对象的几种方法及继承
Apr 12 Javascript
JS定义函数的几种常用方法小结
May 23 Javascript
生产制造追溯系统之再说条码打印
Jun 03 Javascript
Node.js API详解之 tty功能与用法实例分析
Apr 27 Javascript
15个简单的JS编码标准让你的代码更整洁(小结)
Jul 16 Javascript
JS异步宏队列微队列原理详解
Sep 09 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静态变量当缓存的方法
2013/11/13 PHP
纯PHP代码实现支付宝批量付款
2015/12/24 PHP
javascript实现依次输入input自动定焦
2014/12/23 Javascript
实例详解jQuery结合GridView控件的使用方法
2016/01/04 Javascript
js利用正则表达式检验输入内容是否为网址
2016/07/05 Javascript
jQuery数组处理函数整理
2016/08/03 Javascript
JavaScript常用代码书写规范的超全面总结
2016/09/11 Javascript
js正则表达式验证表单【完整版】
2017/03/06 Javascript
bootstrap IE8 兼容性处理
2017/03/22 Javascript
nodejs个人博客开发第三步 载入页面
2017/04/12 NodeJs
详解用vue.js和laravel实现微信授权登陆
2017/06/23 Javascript
JS实现自定义状态栏动画文字效果示例
2017/10/12 Javascript
微信小程序实现YDUI的ScrollNav组件
2018/02/02 Javascript
使用Angular CLI进行Build(构建)和Serve详解
2018/03/24 Javascript
微信小程序适配iphoneX的实现方法
2018/09/18 Javascript
vue(2.x,3.0)配置跨域代理
2019/11/27 Javascript
vue实现下拉菜单树
2020/10/22 Javascript
vue仿携程轮播图效果(滑动轮播,下方高度自适应)
2021/02/11 Vue.js
Python标准库之sqlite3使用实例
2014/11/25 Python
python回调函数中使用多线程的方法
2017/12/25 Python
Django基础知识与基本应用入门教程
2018/07/20 Python
python如何查看微信消息撤回
2018/11/27 Python
python 获取sqlite3数据库的表名和表字段名的实例
2019/07/17 Python
python excel转换csv代码实例
2019/08/26 Python
tensorflow estimator 使用hook实现finetune方式
2020/01/21 Python
html5仿支付宝密码框的实现代码
2017/09/06 HTML / CSS
英国时尚优质的女装:Hope Fashion
2018/08/14 全球购物
英国绿色商店:Natural Collection
2019/05/03 全球购物
化工工艺专业求职信
2013/09/22 职场文书
最新计算机专业自荐信
2013/10/16 职场文书
迎新晚会邀请函
2014/02/01 职场文书
刚毕业大学生自荐信范文
2014/02/20 职场文书
护理专业自荐信范文
2014/02/26 职场文书
毕业班联欢会主持词
2014/03/27 职场文书
《美丽的南沙群岛》教学反思
2014/04/27 职场文书
导游词之西安大清真寺
2019/12/17 职场文书