You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@echarts.apache.org by sh...@apache.org on 2021/07/27 09:21:25 UTC

[echarts] branch optimize-dispose created (now 648ee38)

This is an automated email from the ASF dual-hosted git repository.

shenyi pushed a change to branch optimize-dispose
in repository https://gitbox.apache.org/repos/asf/echarts.git.


      at 648ee38  fix(memory): reduce memory when chart instance is still hold after dispose

This branch includes the following new commits:

     new 648ee38  fix(memory): reduce memory when chart instance is still hold after dispose

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@echarts.apache.org
For additional commands, e-mail: commits-help@echarts.apache.org


[echarts] 01/01: fix(memory): reduce memory when chart instance is still hold after dispose

Posted by sh...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

shenyi pushed a commit to branch optimize-dispose
in repository https://gitbox.apache.org/repos/asf/echarts.git

commit 648ee384914631f86ea1d116c1a088690deaee70
Author: pissang <bm...@gmail.com>
AuthorDate: Tue Jul 27 17:20:43 2021 +0800

    fix(memory): reduce memory when chart instance is still hold after dispose
---
 src/core/echarts.ts | 31 ++++++++++++++++++++++++-------
 1 file changed, 24 insertions(+), 7 deletions(-)

diff --git a/src/core/echarts.ts b/src/core/echarts.ts
index f3f21ed..5265fbe 100644
--- a/src/core/echarts.ts
+++ b/src/core/echarts.ts
@@ -1122,20 +1122,37 @@ class ECharts extends Eventful<ECEventDefinition> {
 
         modelUtil.setAttribute(this.getDom(), DOM_ATTRIBUTE_KEY, '');
 
-        const api = this._api;
-        const ecModel = this._model;
+        const chart = this;
+        const api = chart._api;
+        const ecModel = chart._model;
 
-        each(this._componentsViews, function (component) {
+        each(chart._componentsViews, function (component) {
             component.dispose(ecModel, api);
         });
-        each(this._chartsViews, function (chart) {
+        each(chart._chartsViews, function (chart) {
             chart.dispose(ecModel, api);
         });
 
         // Dispose after all views disposed
-        this._zr.dispose();
-
-        delete instances[this.id];
+        chart._zr.dispose();
+
+        // Set properties to null.
+        // To reduce the memory cost in case the top code still holds this instance unexpectedly.
+        chart._dom =
+        chart._model =
+        chart._chartsMap =
+        chart._componentsMap =
+        chart._chartsViews =
+        chart._componentsViews =
+        chart._scheduler =
+        chart._api =
+        chart._zr =
+        chart._throttledZrFlush =
+        chart._theme =
+        chart._coordSysMgr =
+        chart._messageCenter = null;
+
+        delete instances[chart.id];
     }
 
     /**

---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@echarts.apache.org
For additional commands, e-mail: commits-help@echarts.apache.org