|
|
1
46
一个有用的例子是运行DB4O面向对象数据库的人。在那里,WeakReferences被用作一种轻量级缓存:它只会在应用程序运行时将对象保存在内存中,从而允许您在上面放置一个真正的缓存。 另一个用途是实现弱事件处理程序。目前,内存泄漏的一个主要来源。NET应用程序忘记删除事件处理程序。例如
看到问题了吗?在上面的代码片段中,只要MyApplication在内存中还活着,MyForm就会永远保持在内存中。创建10个MyForms,关闭它们,你的10个MyForm仍将在内存中,由事件处理程序保持活动状态。 输入WeakReference。您可以使用WeakReferences构建弱事件处理程序,使someHandler成为MyApplication的弱事件处理函数。Foo,从而修复你的内存泄漏! 这不仅仅是理论。来自DidItWith的达斯汀·坎贝尔。NET博客发布 an implementation of weak event handlers 使用系统。弱参考。 |
|
|
2
13
我用它来实现一个缓存,其中未使用的条目会被自动垃圾回收:
|
|
|
3
2
我在mixins中使用弱引用来保持状态。记住,混入是静态的,所以当你使用静态对象将状态附加到非静态对象时,你永远不知道需要多长时间。因此,与其保持
唯一的问题是,每次我访问时,我也会检查死引用并将其删除。当然,他们不会伤害任何人,除非有数千人。 |
|
|
4
0
您使用的原因有两个
|
|
codeforester · 测量GC暂停时间的最佳方法是什么? 8 年前 |
|
|
Venki WAR · 需要解释G1的并行完整GC 8 年前 |
|
|
Stephan_Berlin · 为什么CMS系列中的初始标记阶段 8 年前 |
|
|
Bonsaisteak · 为什么年轻一代需要三个区域来收集垃圾? 8 年前 |
|
|
goks · 如何清除熊猫的数据帧内存? 8 年前 |