各位老铁,早上好!今天咱们聊聊JS里让人头疼的“内存泄漏”以及如何用Chrome DevTools的“Memory Snapshots”里的“Retaining Paths”揪出背后的“黑手”。 内存泄漏就像你家的水龙头,一直滴滴答答,不关紧。刚开始你可能没啥感觉,但时间长了,水池子溢出来了,房子也淹了。JS里的内存泄漏也是一样,少量泄漏可能察觉不到,但积累多了,浏览器就卡顿了,甚至崩溃了。 内存泄漏的那些事儿 简单来说,内存泄漏就是程序不再需要使用的内存,却仍然被占用,导致可用内存越来越少。JS作为一种垃圾回收(Garbage Collection, GC)的语言,按理说应该自动管理内存。但是,总有一些情况,GC “手滑” 了,没能正确回收那些应该回收的内存。 常见的内存泄漏场景 意外的全局变量: 在非严格模式下,你可能会不小心创建一个全局变量,比如: function foo(arg) { bar = “这是一段很长的字符串”; // 忘记加var/let/const,bar变成全局变量 } foo(); // 调用后,bar就一直存在于全局作用域,不会被回收 这个bar变量会一直 …
继续阅读“JS `Memory Snapshots` `Retaining Paths` 分析:识别复杂引用链导致的内存泄漏”