内存泄漏怎么排查到具体代码?-灵析社区

米小米会努力

切换页面之后发现内存一直在增长,应该是内存泄漏了,拍了快照想追踪是哪里内存没有被回收掉,但是不知道该怎么去看。 如下图图一,是不是“保留的大小”这一列占据比例越大说明越说明内存没有被释放?排名第一的是Object是不是说明有很多变量没有被回收?但是打开Object,如下图图二,下面的所有Object又都是0%,这是代表都被回收了?那为什么上方总的Object是7%啊,不太明白 ![image.png](https://wmprod.oss-cn-shanghai.aliyuncs.com/c/user/20240927/176fad2eedfbe78b7156da7b2907de09.png) ![image.png](https://wmprod.oss-cn-shanghai.aliyuncs.com/c/user/20240927/a3662cfb16090481815605686f18d415.png) 我拍快照是首先点一下垃圾回收按钮,然后在A页面点开始快照拍一张,然后再切换到B页面,再拍一张快照,不知道这种拍快照方式是不是对的?另外页面切换有几十兆的内存增长是正常的吗?

阅读量:128

点赞量:0

问AI
1. 得是内存完全无法回收才是“内存泄漏”。 2. JS 因为 GC 并不受控制,所以一般来说都是引擎认为需要回收才会回收。内存回收需要消耗资源,所以不会一直运行。比如你的内存很大,你的应用虽然占了不少,但比例上来看并不高,那么 GC 可能也不会运行。 3. 同样的道理,你只是截图,也未必能证明泄漏。 4. 基本上,JS 内存泄漏的标志是,你一直用,它就一直涨,涨到后来开始卡,甚至崩溃。 5. JS 内存泄漏排查比较困难,一般要不断缩小范围,很难直接找到问题。