From 3209f6f517a4fa44c563cd7cc048fa29be1bc930 Mon Sep 17 00:00:00 2001 From: Evan You Date: Mon, 27 Mar 2017 09:49:05 +0800 Subject: [PATCH] remove parent/ref elm references when destroying instance, fix memory leak (fix vue-router#1279) --- src/core/instance/lifecycle.js | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/core/instance/lifecycle.js b/src/core/instance/lifecycle.js index e6e0ed9629a..36ef0765f66 100644 --- a/src/core/instance/lifecycle.js +++ b/src/core/instance/lifecycle.js @@ -119,6 +119,9 @@ export function lifecycleMixin (Vue: Class) { } // call the last hook... vm._isDestroyed = true + // invoke destroy hooks on current rendered tree + vm.__patch__(vm._vnode, null) + // fire destroyed hook callHook(vm, 'destroyed') // turn off all instance listeners. vm.$off() @@ -126,8 +129,8 @@ export function lifecycleMixin (Vue: Class) { if (vm.$el) { vm.$el.__vue__ = null } - // invoke destroy hooks on current rendered tree - vm.__patch__(vm._vnode, null) + // remove reference to DOM nodes (prevents leak) + vm.$options._parentElm = vm.$options._refElm = null } }