使用 EcmaScript 中的 WeakMap 时,时序问题注意事项
Timing issues considerations when using WeakMap from EcmaScript
JavaScript 中 WeakMap 的正确用法是什么?使用时可能会出现什么样的计时问题?特别是,我想知道在以下情况下会发生什么:
var wm1 = new WeakMap()
var o1 = {},
o2 = function(){},
o3 = window;
// in other method:
wm1.set(o1, 37);
wm1.set(o2, "azerty");
if (wm1.has(o2)) {
//Garbage collection happen here, objects from wm1 may no longer exists
Console.log(wm1.get(o2)) // what will happen here? just undefined? null?
}
GC 将如何影响弱图?
更新:我的错,我错过了你不能在 WeakMap 中将字符串作为键的事实,如果我考虑到这一事实,我的问题就不会成立。
WeakMap
被明确设计为不表现出最不明显的垃圾回收行为。绝对不会有任何问题。
在您的特定位置中,只要您持有对对象或函数的引用(通过仍在堆栈上的实时变量o1
和o2
),您就可以在WeakMap
或WeakSet
中找到它们。一旦你不再引用它们,也没有人这样做,它们就有资格进行垃圾收集(就像往常一样) - 鉴于此,没有人能够尝试在收集中查找它们。
相关文章:
- 在指令控制器中使用$attrs时出现问题
- 将PHP变量传递给jQuery时遇到问题
- Canvas Html5绘图应用程序,移动画布会导致重大问题
- 参数变量出现ngTable指令问题
- 剑道网格jQuery动画()问题
- 我的jQuery插件参数没有正确启动,遇到了问题
- Phonegap-(安卓/iphone)多个图像的图像库出现问题
- TableExport jquery插件:文件名和扩展名问题
- 什么'最合适的数据结构是什么?(使用一个有间隙的数组是否存在缺点或注意事项?)
- JS 字段验证 - 循环遍历对象,每个字段有三个数据注意事项
- 将消息从主 http 页面发送到 https iframe 时的安全注意事项
- 使用 EcmaScript 中的 WeakMap 时,时序问题注意事项
- 使用“new Function(..) ”的安全注意事项“(在渲染期间,表达式来自我的 Javascript 源代码)
- 注意事项将C#字符串编码为Javascript字符串
- 使用servlet从/WEB-INF/异步加载javascript:一般注意事项
- CSS/HTML/JS:构建移动布局网站时需要注意的事项
- Node.js SIGTERM实现注意事项
- 测试jQuery插件的资源/技术/注意事项
- 使用每个功能时的注意事项
- 使用javascript动态创建表单需要注意哪些事项