ecomfe / echarts-gl

Extension pack for Apache ECharts, providing globe visualization and 3D plots.
BSD 3-Clause "New" or "Revised" License
2.59k stars 844 forks source link

关于globe坐标下,dispose实例后内存没有完全释放 #265

Open Hikarien opened 5 years ago

Hikarien commented 5 years ago

初始化实例

var chart = echarts.init(document.getElementById('Earth-Content'));
chart.setOption(earth_config);
chart.on('click', function (params) {
    if (_this.props.ChangeFrame) {
        _this.props.ChangeFrame(MapGIS, 2);
    }
});

销毁实例

var chart = echarts.getInstanceByDom(document.getElementById('Earth-Content'));
if (chart) {
    chart.off('click');
    chart.clear();
    chart.dispose();
}

image

Hikarien commented 5 years ago

131 和这个issue现象不同,他是网站标签页内存爆了

我这边是网站本身正常,但是GPU进程内存爆了,所以再发了一份issue 如果是我的问题,还请指出!

项目依赖如下:

  "dependencies": {
    "antd": "^3.10.1",
    "axios": "^0.18.0",
    "echarts": "^4.2.0-rc.2",
    "echarts-gl": "^1.1.1",
    "react": "^16.5.2",
    "react-app-polyfill": "^0.1.3",
    "react-dom": "^16.5.2",
    "react-router-dom": "^4.3.1",
    "react-scripts": "2.0.5"
  }
Hikarien commented 5 years ago

跟了一下占用资源的对象,好像在zrender里有layer没有完全释放 所以看了zrender的文档,目前采用以下回避策略

在dispose echarts实例时,追加zrender的dispose处理 爆内存情况有显著改善,但不确定是否完全解决

import zrender from 'zrender';

zrender.dispose();