地图上的Leafletjs内存泄漏删除

Posted

技术标签:

【中文标题】地图上的Leafletjs内存泄漏删除【英文标题】:Leafletjs memory leak on map remove 【发布时间】:2018-01-05 19:35:34 【问题描述】:

我为map.remove() 中的一个潜在问题开发了一个样本。

见:https://jsfiddle.net/moricio/e2wvwgu8/1/

此示例将选择一个随机的 lat/lng,并将显示以该点为中心的地图。在移除地图并生成新位置之前,它将等待 10 秒。它一遍又一遍地这样做。

如果您在 Chrome 中打开此示例并检查 Chrome 任务管理员 (Shift-Esc),您会注意到在每个删除/添加对处,选项卡使用的内存将增加,直到您的系统在几个小时后抓取。

错误还是我的错误?

【问题讨论】:

【参考方案1】:

这是 Leaflet 中的一个已知问题 - 请参阅 https://github.com/Leaflet/Leaflet/issues/5263 和 https://github.com/Leaflet/Leaflet/pull/5265 。在此更改之前,任何L.CanvasL.SVG(包括默认的)都会泄漏大量内存。在该更改之后的 Leaflet 版本中,您应该只会在一个(难以定位)循环引用中遇到对 L.Draggable 实例的泄漏,这应该不是什么大问题。

【讨论】:

以上是关于地图上的Leafletjs内存泄漏删除的主要内容,如果未能解决你的问题,请参考以下文章

如何查找 Java 内存泄漏

NSArray 上的 Swift 内存泄漏

套接字上的内存泄漏

Windows 7 上的 C++ 内存泄漏

如何检测 iPhone 上的内存泄漏?

XP 上的 WPF 内存泄漏(CMilChannel,HWND)