当前位置:  开发笔记 > 编程语言 > 正文

在垃圾收集发生时是否有任何事件告诉应用程序?

如何解决《在垃圾收集发生时是否有任何事件告诉应用程序?》经验,为你挑选了2个好方法。

我试图找到一种了解垃圾收集的方法.当它已经开始,完成或正在进行时.我真的只需要一些事件连接到集合本身(我想).

我的问题是我有一个WeakEventManager(从头开始编写),我有清除方法,删除和WeakReferences不再存在(WeakReferences在字典中).

问题是我必须知道何时"清理".当收集器正在做它的事情时清理它会很好.即使它是在垃圾收集之后,至少下一个集合将删除这些旧对象.



1> Richard..:

您可以监视.NET内存性能计数器对象.对于0,1和2集合的数量有计数.

通常在基于GC的系统上,直接引用GC是一种反模式.当您尝试使用已清除的WeakReference时,您可能(给出有限的描述)只是懒得清理.



2> CraigTP..:

System.GC类提供了一个RegisterForFullGCNotification方法,该方法将允许在垃圾收集即将完成时以及何时完成时引发通知.

这并不理想,因为使用此方法有一些注意事项,例如必须禁用并发垃圾收集才能使此方法起作用.

有关完整信息,请参阅以下链接:

垃圾收集通知

GC.RegisterForFullGCNotification方法

推荐阅读
凹凸曼00威威_694
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有