antvis / antvis/L7

L7多次执行“创建-销毁“过程,会出现内存泄漏的问题

Open
#2,172 4 comments 0 reactions 1 assignee Claimed by @lzxue View on GitHub
🌟 star AntV OSCP
Dominant language
TypeScript
Stars
4.1k
Forks
656
PR merge metrics
No merged PRs in 30d

Description

### 问题描述

请参见提供的demo, 当用L7.Map 和L7.GaodeMap 初始化L7 Scene实例, 正常添加layer渲染,正常渲染后,执行scene的destroy 操作,重复多次(20次),当执行最后一次scene销毁操作后,发现内存有泄漏。
用不同底图,表现略有不同
1. 用L7.GaodeMap时,GPU内存增加的很大。
2. 用L7.Map时,发现Dom 有事件重复挂载不摘除的问题。

### 重现链接

https://codesandbox.io/p/sandbox/great-shape-tj3thr?file=%2Findex.html%3A5%2C29

### 重现步骤

1. 打开demo 链接,
2. 打开chrome任务管理器,记录开始前内存情况。
3. 点击Start ,自动执行Gaode 底图的20次创建销毁操作。
4. 结束以后,再次观察内存变化。

5. 然后修改GaodeMap 为Map,
`scene = new L7.Scene({
map: new L7.Map({
center: [120.19382669582967, 30.258134],
pitch: 0,
zoom: 3,
}),
//map: new L7.GaodeMap({
//token: "aa6f555ae5e4ced230195f3f52db5898",
//center: [120.19382669582967, 30.258134],
//pitch: 0,
//zoom: 3,
//}),
});`
6. 重复步骤2-4, 观察Map底图的20次创建销毁内存变化。

### 预期行为

调查L7.Map地图和L7.GaodeMap 重复创建销毁内存泄漏问题,并修复。

### 平台

- 操作系统: [ Windows]
- 网页浏览器: [Google Chrome]

### 屏幕截图或视频(可选)

L7.GaodeMap
执行start 前
![image](https://github.com/antvis/L7/assets/9842242/b01cc157-853f-4a21-a256-92ae894105b8)
20次创建销毁后
![image](https://github.com/antvis/L7/assets/9842242/4232c2d0-988a-4588-b7c2-7a977760011a)

L7.Map
执行20次创建销毁后,dom 上遗留的事件列表
![image](https://github.com/antvis/L7/assets/9842242/bb6cbef8-c7c7-4002-9913-5db76e0a7b18)

### 补充说明(可选)

当地图使用的数据越大,内存泄漏问题约明显。

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.