这是Vue.js的内存泄漏吗?

问题描述 投票:1回答:1

这里是组件的代码:

import { defineComponent, ref } from "@vue/composition-api";

const template = /* html */ `
<div>
  <nav>
    <button @click="showCanvas = !showCanvas">Toggle</button>
  </nav>a
  <canvas v-if="showCanvas" width="1000" height="1000" style="width: 50%; height: auto; background-color: #eee"></canvas>
</div>
`;

export default defineComponent({
  name: "SimpleIf",
  template,
  setup() {
    return {
      showCanvas: ref(true)
    };
  }
});

只有一个<canvas>,带有一个显示或隐藏画布的<button>

我将Vue 2与合成API一起使用。

[在Firefox中,我打开开发工具。在“内存”选项卡中,拍摄快照。我将视图设置为“聚合”,并使用“画布”进行过滤:

Screenshot before

HTMLCanvasElement的数目是1。现在,我多次单击按钮,然后再次拍摄快照:

Screenshot after

HTMLCanvasElement的数目是9

为什么?

注意:之所以进行此测试,是因为在真实的应用程序中,由于巨大的画布导致无法解释的内存泄漏。我想了解Vue如何清除未使用的DOM元素以及为什么我的内存仍在内存中。

javascript vue.js dom canvas memory-leaks
1个回答
0
投票

在Chrome和Firefox中都对sandbox进行了一些研究,肯定创建了新的Canvas元素,但是在Garbage Collector

© www.soinside.com 2019 - 2024. All rights reserved.