60亿次for循环,原来这么多东西( 四 )

  • 这里应该还是跟CPU有一些关系 , 因为top查看一直是在升高
  • 此处虽然不是真正意义上的内存泄漏 , 但是我们如果在一个循环中不仅要不断更新i的值到60亿 , 还要不断更新num的值60亿 , 内存使用会不断上升 , 最终出现两份60亿的数据 , 然后再回收 。(因为GC自动垃圾回收 , 一样会阻塞主线程 , 多次接口调用后 , CPU占用也会升高)
  • 使用for循环拆解后:
  •  for (let i = 1; i < 60000; i++) {      num++;      for (let j = 0; j < 100000; j++) {        num++;      }    }
    • 只要num到60亿即可,解决了这个问题 。
    哪些场景会遇到这个类似的超大计算量问题:
    • 图片处理
    • 加解密
    ?
    如果是异步的业务场景 , 也可以用多进程参与解决超大计算量问题 , 今天这里就不重复介绍了
    作者: Peter 谭老师
    转发链接:https://mp.weixin.qq.com/s/Vs8CwdGJ6JUyH_Kp0H5l4Q

    【60亿次for循环,原来这么多东西】


    推荐阅读