1

我最近注意到我的同事倾向于在取消引用之前清除所有映射,例如在函数结束时。

他对此的论点是,这是垃圾收集的好习惯,我很好奇这是真的还是过度优化的情况?

例子:

function useMap() {
  const map = new Map();
  // do stuff
  map.clear();
}
4

1 回答 1

1

假设有问题的 javascript 运行时使用跟踪垃圾收集器(大多数都这样做),它只会访问并处理可从 GC 根访问的对象。由于地图本身不可访问,因此地图中是否仍有引用无关紧要,它们将永远不会被访问。

请注意,对于C#Java等,已经提出了类似的问题。底层机制非常相似,因此可以基于垃圾收集器理论以与语言无关的方式提出此类问题。

于 2018-03-27T19:52:34.543 回答