Expected Behavior
The target's data should be clear when it get disposed.
Actual Behavior
Memory leak happens on both disposing targets or load project.
Steps to Reproduce
- Open DevTools, Shot a memory heap snapshot.
- Open a large project, like https://scratch.mit.edu/projects/613688710
- Shot again.
- Create a new project, shot again.
Screenshots
(Init -> Load an large project -> Create a new project)
The Cause
1. _StackFrameFreeList never get clear
_StackFrame holds target, and _StackFrameFreeList will recycle the disposed stack frames. but it never get clear.
A verified fix here: Clipteam/clipcc#237
2. Previous target's skins won't get disposed
This problem has been addressed before (an issue in old scratch-gui repo). A workaround can be considered:
if (this.renderer && '_allSkins' in this.renderer) {
this.renderer._allSkins.forEach(skin => {
this.renderer!.destroySkin(skin._id);
});
}
Expected Behavior
The target's data should be clear when it get disposed.
Actual Behavior
Memory leak happens on both disposing targets or load project.
Steps to Reproduce
Screenshots
(Init -> Load an large project -> Create a new project)
The Cause
1.
_StackFrameFreeListnever get clear_StackFrameholds target, and_StackFrameFreeListwill recycle the disposed stack frames. but it never get clear.A verified fix here: Clipteam/clipcc#237
2. Previous target's skins won't get disposed
This problem has been addressed before (an issue in old scratch-gui repo). A workaround can be considered: