From a0a3cde2c6c3eb95326e014289dff15629ab2199 Mon Sep 17 00:00:00 2001 From: familyboat <84062528+familyboat@users.noreply.github.com> Date: Tue, 29 Oct 2024 15:47:08 +0800 Subject: [PATCH] Update files/zh-cn/web/javascript/memory_management/index.md Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- files/zh-cn/web/javascript/memory_management/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/files/zh-cn/web/javascript/memory_management/index.md b/files/zh-cn/web/javascript/memory_management/index.md index 30de4f42fc9b49..3716b7527debb5 100644 --- a/files/zh-cn/web/javascript/memory_management/index.md +++ b/files/zh-cn/web/javascript/memory_management/index.md @@ -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 中,键和值都不分类为弱或强。键的连接性决定了值的连接性,但值的连接性不会影响键的连接性。[...]当垃圾回收提供临时对象的支持时,它会出现三个阶段而不是两个(标记和清除)。