一点背景
有一个基于wpf的应用程序,我打开2-3天没有执行任何活动抛出内存异常,这是非常奇怪的情况,并不会一直发生。在这个理想的活动期间,我的应用程序不会执行任何活动,只是一个文件系统观察者连续观看共享位置,所以我认为这将是一个问题,但我不确定。任何建议总是受到欢迎。
答案 0 :(得分:1)
当FileSystemWatcher事件发生时,您是否正在向list \ collection添加内容?你可以直接这样做,或者更可能间接地这样做,如果不明显的话。
这最终可能会导致OOM,并且取决于已经发生了多少事件,因此到达OOM所需的时间可能变化很大。
FileSystemWatcher本身不会引导OOM。它维护internal buffer,但如果文件系统事件数据不能足够快地通过FSW事件获取,它将覆盖缓冲区。
所以不,FileSystemWatcher本身不会导致OOM - 内部缓冲机制通过设计消除了这种可能性。
答案 1 :(得分:1)
windbg
(来自Debugger Tools for Windows的调试器,包含在Windows SDK中,本身包含在VS中)包括一个在托管堆上转储统计信息的命令。包括分配什么类型的类型。这应该有助于确定哪些对象没有被收集(可能通过一些应该被清除的引用)。
这应该让你开始:http://blogs.msdn.com/b/tess/archive/2005/11/25/496973.aspx