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 相关文章推荐
利用ASP发送和接收XML数据的处理方法与代码
Nov 13 Javascript
javascript prototype 原型链
Mar 12 Javascript
基于jquery的超简单上下翻
Apr 20 Javascript
php和js对数据库图片进行等比缩放示例
Apr 28 Javascript
分享一则javascript 调试技巧
Jan 02 Javascript
Js可拖拽放大的层拖动特效实现方法
Feb 25 Javascript
javascript数组排序汇总
Jul 07 Javascript
fullpage.js全屏滚动插件使用实例
Sep 06 Javascript
Bootstrap模态框禁用空白处点击关闭
Oct 20 Javascript
通过vue-router懒加载解决首次加载时资源过多导致的速度缓慢问题
Apr 08 Javascript
JavaScript事件对象event用法分析
Jul 27 Javascript
Node.js之readline模块的使用详解
Mar 25 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简介
2006/10/09 PHP
火车采集器 免费版使出收费版本功能实现原理
2009/09/17 PHP
PHP 图像尺寸调整代码
2010/05/26 PHP
php继承的一个应用
2011/09/06 PHP
php实现下载限制速度示例分享
2014/02/13 PHP
PHP @ at 记号的作用示例介绍
2014/10/10 PHP
php中数字、字符与对象判断函数用法实例
2014/11/26 PHP
Smarty foreach控制循环次数的一些方法
2015/07/01 PHP
Thinkphp框架+Layui实现图片/文件上传功能分析
2020/02/07 PHP
jQuery随机切换图片的小例子
2013/04/18 Javascript
javascript刷新父页面的各种方法汇总
2014/09/03 Javascript
JavaScript中数据结构与算法(四):串(BF)
2015/06/19 Javascript
Spring mvc 接收json对象
2015/12/10 Javascript
AngularJS中transclude用法详解
2016/11/03 Javascript
jQuery 出现Cannot read property ‘msie’ of undefined错误的解决方法
2016/11/23 Javascript
jQuery+PHP+Mysql实现抽奖程序
2020/04/12 jQuery
BootStrap 动态表单效果
2017/06/02 Javascript
jQuery常见面试题之DOM操作详析
2017/07/05 jQuery
layui获取选中行数据的实例讲解
2018/08/19 Javascript
Vue条件循环判断+计算属性+绑定样式v-bind的实例
2018/09/18 Javascript
详解微信小程序之scroll-view的flex布局问题
2019/01/16 Javascript
python 控制语句
2011/11/03 Python
python创建进程fork用法
2015/06/04 Python
python操作oracle的完整教程分享
2018/01/30 Python
在Pycharm中调试Django项目程序的操作方法
2019/07/17 Python
如何使用Python抓取网页tag操作
2020/02/14 Python
Python filter过滤器原理及实例应用
2020/08/18 Python
德国奢侈品网上商城:Mytheresa
2016/08/24 全球购物
explicit和implicit的含义
2012/11/15 面试题
《得道多助,失道寡助》教学反思
2014/04/19 职场文书
行政管理专业求职信
2014/07/06 职场文书
党员批评与自我批评(5篇)
2014/09/23 职场文书
房屋分割离婚协议书范本
2014/12/01 职场文书
刚学完怎么用Python实现定时任务,转头就跑去撩妹!
2021/06/05 Python
Nginx配置之实现多台服务器负载均衡
2021/08/02 Servers
JS前端使用Canvas快速实现手势解锁特效
2022/09/23 Javascript