From 743b4b74fc88e51e9032cfe79aad42dfcd53d5de Mon Sep 17 00:00:00 2001 From: Che Guevara <836934184@qq.com> Date: Fri, 22 Oct 2021 13:33:44 +0800 Subject: [PATCH 1/2] fix(devtools): fix memory leak when devtools is not installed --- packages/runtime-core/src/devtools.ts | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/packages/runtime-core/src/devtools.ts b/packages/runtime-core/src/devtools.ts index b5cbe30608a..ee02ea9e550 100644 --- a/packages/runtime-core/src/devtools.ts +++ b/packages/runtime-core/src/devtools.ts @@ -33,8 +33,12 @@ export let devtools: DevtoolsHook let buffer: { event: string; args: any[] }[] = [] +let devtoolsNotInstalled = false + function emit(event: string, ...args: any[]) { - if (devtools) { + if (devtoolsNotInstalled) { + buffer = [] + } else if (devtools) { devtools.emit(event, ...args) } else { buffer.push({ event, args }) @@ -56,7 +60,10 @@ export function setDevtoolsHook(hook: DevtoolsHook, target: any) { // clear buffer after 3s - the user probably doesn't have devtools installed // at all, and keeping the buffer will cause memory leaks (#4738) setTimeout(() => { - buffer = [] + if (!devtools) { + devtoolsNotInstalled = true + buffer = [] + } }, 3000) } } From fece465d0ebfefed0726c57af7767528482aa235 Mon Sep 17 00:00:00 2001 From: Evan You Date: Mon, 1 Nov 2021 23:14:31 -0400 Subject: [PATCH 2/2] Update devtools.ts --- packages/runtime-core/src/devtools.ts | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/packages/runtime-core/src/devtools.ts b/packages/runtime-core/src/devtools.ts index ee02ea9e550..2e09a2e24a1 100644 --- a/packages/runtime-core/src/devtools.ts +++ b/packages/runtime-core/src/devtools.ts @@ -36,11 +36,9 @@ let buffer: { event: string; args: any[] }[] = [] let devtoolsNotInstalled = false function emit(event: string, ...args: any[]) { - if (devtoolsNotInstalled) { - buffer = [] - } else if (devtools) { + if (devtools) { devtools.emit(event, ...args) - } else { + } else if (!devtoolsNotInstalled) { buffer.push({ event, args }) } }