2.5.17
https://codesandbox.io/s/4k43rylw0
Muat reproduser dan ambil snapshot heap memori. Mencari heap, Anda akan menemukan 4 VueComponents (App, Container, Child, Async Child)
Klik tombol Hancurkan. Ini mematikan v-if yang akan menghapus komponen Child dan juga komponen AsyncChild.
Setelah menghancurkan komponen Child, komponen tersebut dan komponen turunannya yang dimuat secara asinkron harus dihancurkan dan memori dibebaskan.
Vue berpegang pada referensi konteks yang mencegah komponen-komponen ini dari pengumpulan sampah
Ini terjadi karena logika komponen-asinkron yang ada di sini: https://github.com/vuejs/vue/blob/52719ccab8fccffbdf497b96d3731dc86f04c1ce/src/core/vdom/helpers/resolve-async-component.js#L57 -L68
Dalam fungsi forceRender di baris 64, setelah memanggil $ forceUpdate, larik konteks harus dikosongkan untuk membebaskan referensi tersebut sehingga komponen akan dapat sampah dikumpulkan di lain waktu
Saya juga dapat mengirimkan PR untuk perbaikan masalah ini, terima kasih
PR dikirimkan di sini: https://github.com/vuejs/vue/pull/8755
Hai @Linusorg
Saya melihat Anda menambahkan beberapa label ke masalah ini. Apakah ada hal lain yang perlu saya lakukan untuk memulai proses peninjauan permintaan penarikan yang dirujuk?
Terima kasih!
Komentar yang paling membantu
Saya juga dapat mengirimkan PR untuk perbaikan masalah ini, terima kasih