console.log 会导致内存泄漏。
这点没错。
但很多同学会有疑问,是不是因为打开 devtools 才有内存泄漏,不打开就不会呢?
这个我测试了一下:点击几次按钮,这时候应该调用了 console.log 打印了,然后我过了 10 分钟,确保执行过 gc 了,再打开控制台,依然是可以看到那个对象的详情的。
这说明打印的对象没有被 gc,不然怎么还可以看到详情呢?
于是我得出结论,不打开 devtools 也是有内存泄漏的。
但我今天换了种测试方法,貌似不打开 devtools 时 console.log 是没有内存泄漏的。
不打开 devtools 怎么确定内存泄漏问题呢?
看下内存大小不就知道了?
通过 performance.memory.totalJSHeapSize 是可以拿到堆内存大小的。
我们通过分析 console.log 的代码执行后的堆内存大小变化就行。