Skip to content

Commit

Permalink
Update files/zh-cn/web/javascript/memory_management/index.md
Browse files Browse the repository at this point in the history
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
  • Loading branch information
familyboat and github-actions[bot] authored Oct 29, 2024
1 parent b903882 commit a0a3cde
Showing 1 changed file with 1 addition and 1 deletion.
2 changes: 1 addition & 1 deletion files/zh-cn/web/javascript/memory_management/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -203,7 +203,7 @@ wm.set(key, { key });
// 并且值在 map 中是强引用!
```

假设 `key` 存储为真实的引用,它将创建一个循环引用,让键和值都不适合垃圾回收,即使在 `key` 没有被引用时——因为假设 `key` 被垃圾回收了,这意味着在某个特定的时刻,`value.key` 将指向一个不存在的地址,而这是非法的。为了修复这个,`WeakMap``WeakSet` 的条目不是真正的引用,而是 [临时对象](https://dl.acm.org/doi/pdf/10.1145/263700.263733),对标记清除机制的增强。[Barros et al.](https://www.jucs.org/jucs_14_21/eliminating_cycles_in_weak/jucs_14_21_3481_3497_barros.pdf) 对算法提供了一个很好的总结(第 4 页)。引用一段:
假设 `key` 存储为真实的引用,它将创建一个循环引用,让键和值都不适合垃圾回收,即使在 `key` 没有被引用时——因为假设 `key` 被垃圾回收了,这意味着在某个特定的时刻,`value.key` 将指向一个不存在的地址,而这是非法的。为了修复这个,`WeakMap``WeakSet` 的条目不是真正的引用,而是 [临时对象](https://dl.acm.org/doi/pdf/10.1145/263700.263733),对标记清除机制的增强。[Barros et al.](https://www.jucs.org/jucs_14_21/eliminating_cycles_in_weak/jucs_14_21_3481_3497_barros.pdf) 对算法提供了一个很好的总结(第 4 页)。引用一段

> 临时对象是 weak pairs 的改进,在 pairs 中,键和值都不分类为弱或强。键的连接性决定了值的连接性,但值的连接性不会影响键的连接性。[...]当垃圾回收提供临时对象的支持时,它会出现三个阶段而不是两个(标记和清除)。
Expand Down

0 comments on commit a0a3cde

Please sign in to comment.