美文网首页
JS 内存泄露排查

JS 内存泄露排查

作者: JerryDai | 来源:发表于2020-03-25 22:33 被阅读0次

在后台在管理界面直接编辑 JS,类是于于下面这些

{
  "data": ${data},
  "name": "xxxx",
  "testFun" : function(){}
}

${data} 就是动态的数据,到前端之前会做替换。然后每次 ajax 获取回来的时候构建一下然后赋值给前端控件。但是通 过 new Function 的方式实现对JS的编译。

var convertToFn = function (fun) {
    var f2 = (new Function("return " + fun))();
    return f2;
}

上线后,这种方式不出一天浏览器的内存已经被耗尽(10秒钟调用后台数据进行对控件局部刷新)。

w300

解决方案

不在支持后台一改动JS前端就可以识别,改动了JS需要刷新页面,但是依然支持编写JS脚本(计算和方法调用)。

  1. 先将编写的JS输出到指定的方法里面(这里JSP的通过EL表达式输出到指定的位置,也可以通过其他动态的计算实现)
  2. 外网有一个空的对象,每次只需要重新对此值进行重新赋值
  3. 获取新的只需要调用getData 方法即可完成计算逻辑。
//临时对象(通过动态赋予此对象来获得值更新)
var dynamicData = {};

//调用此方法来获取最新的值,而不用每次都将真个JS构建
var getData = function(){

    //将后台编辑的JS对象输出到界面
    return {
      "data": dynamicData,
      "name": "xxxx",
      "testFun" : function(){}
    }
}

//动态刷新数据
setInterval(function(){
    //赋值给此变量,后面调用的时候就可以拿到最新的了
    data = Math.random(1000000)*100;
    //这里就可以拿到最新的计算后的数据了
    getData();
}, 10);

通过改造后,内存已经稳定。不在增长。

相关文章

  • JS 内存泄露排查

    在后台在管理界面直接编辑 JS,类是于于下面这些 ${data} 就是动态的数据,到前端之前会做替换。然后每次 a...

  • 【实践】golang pprof 实战-CPU,heap,all

    目录 前言实验准备获取“炸弹”使用 pprof排查 CPU 占用过高排查内存占用过高排查频繁内存回收排查协程泄露排...

  • 内存泄露排查

    想起之前在知乎看到的两个动图, 一个是C++的垃圾回收, 一个是Java的垃圾回收. 笑... python的内存...

  • 如何写高性能的JS

    我们前面讲述都是编写的代码导致内存泄露如何去排查,但是如何去写出高性能的JS代码 如何精准测试JavaScript...

  • js内存泄露

    js内存泄露 js内存的机制 js的基本变量 boolean string number null undefin...

  • 排查内存泄露 内存溢出

    使用jps:jps -l使用ps:ps aux | grep tomat 找到需要监控的进程id,然后使用命令如下...

  • 内存泄露排查--UMDH

    注意 :下文中出现的GTJ2018.exe,请根据实际情况替换成对应的APP名称 1 安装Debugging To...

  • skywalking内存泄露排查

    点赞、关注是对我最大的鼓励,本文收录于 https://github.com/lkxiaolou/lkxiaolo...

  • iOS内存泄露,你做好iOS加密工作了吗?

    内存泄露问题是每个app都必须关注的问题,关系到线上的稳定性和性能。内存泄露会导致: 由于内存资源不足发生难以排查...

  • 压测后go服务内存暴涨

    背景 服务上线前进行常规压测,压测完通过监控发现进程占用内存久久无法下降,一度认为是内存泄露。根据内存泄露排查法,...

网友评论

      本文标题:JS 内存泄露排查

      本文链接:https://www.haomeiwen.com/subject/iryfuhtx.html