对 rehype-highlight (v7.0.0) 内存泄漏问题的分析

内存泄漏的整体分析在这个 issue comment 里面进行了概括,但是其实说明不是很完全。 咱再来手动说明一下吧。rehype-highlight 的上游库 lowlight 使用 highlight.js 进行代码高亮,使用 hljs 提供的 newInstance 方法创建多个 HLJS 实例。理论上来说这些实例在不使用之后应当被垃圾回收,但是事实上这么美好的愿景并没有实现,原因就是 newInstance 方法的实现偷懒了,导致每次都会执行 window.addEventListene […]