内存泄漏怎么排查到具体代码?

新手上路,请多包涵

切换页面之后发现内存一直在增长,应该是内存泄漏了,拍了快照想追踪是哪里内存没有被回收掉,但是不知道该怎么去看。

如下图图一,是不是“保留的大小”这一列占据比例越大说明越说明内存没有被释放?排名第一的是Object是不是说明有很多变量没有被回收?但是打开Object,如下图图二,下面的所有Object又都是0%,这是代表都被回收了?那为什么上方总的Object是7%啊,不太明白
image.png
image.png

我拍快照是首先点一下垃圾回收按钮,然后在A页面点开始快照拍一张,然后再切换到B页面,再拍一张快照,不知道这种拍快照方式是不是对的?另外页面切换有几十兆的内存增长是正常的吗?

阅读 876
1 个回答
  1. 得是内存完全无法回收才是“内存泄漏”。
  2. JS 因为 GC 并不受控制,所以一般来说都是引擎认为需要回收才会回收。内存回收需要消耗资源,所以不会一直运行。比如你的内存很大,你的应用虽然占了不少,但比例上来看并不高,那么 GC 可能也不会运行。
  3. 同样的道理,你只是截图,也未必能证明泄漏。
  4. 基本上,JS 内存泄漏的标志是,你一直用,它就一直涨,涨到后来开始卡,甚至崩溃。
  5. JS 内存泄漏排查比较困难,一般要不断缩小范围,很难直接找到问题。
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题