我试图找到一种了解垃圾收集的方法.当它已经开始,完成或正在进行时.我真的只需要一些事件连接到集合本身(我想).
我的问题是我有一个WeakEventManager(从头开始编写),我有清除方法,删除和WeakReferences不再存在(WeakReferences在字典中).
问题是我必须知道何时"清理".当收集器正在做它的事情时清理它会很好.即使它是在垃圾收集之后,至少下一个集合将删除这些旧对象.
您可以监视.NET内存性能计数器对象.对于0,1和2集合的数量有计数.
通常在基于GC的系统上,直接引用GC是一种反模式.当您尝试使用已清除的WeakReference时,您可能(给出有限的描述)只是懒得清理.
System.GC类提供了一个RegisterForFullGCNotification方法,该方法将允许在垃圾收集即将完成时以及何时完成时引发通知.
这并不理想,因为使用此方法有一些注意事项,例如必须禁用并发垃圾收集才能使此方法起作用.
有关完整信息,请参阅以下链接:
垃圾收集通知
GC.RegisterForFullGCNotification方法