【发布时间】:2012-05-28 13:40:40
【问题描述】:
我的一些对象没有被垃圾回收,我需要找出对对象的引用在哪里以及是什么阻止了垃圾回收。
我正在使用 Visual Studio Express。
【问题讨论】:
-
您是否首先尝试过 Microsoft CLR 分析器?这有一些内存分析工具可能会有所帮助:microsoft.com/en-us/download/details.aspx?id=16273
-
你的代码是。注意,只有当它无法到达(没有其他东西在引用它)并且它是一个托管对象并且正在调用 collect 时,它才会被垃圾收集。
-
我曾尝试使用 CLRProfiler,但它只是给我错误消息,而且似乎无法正常运行。
-
@TonyHopkinson:我调用 GC.collect 只是为了确保它运行。
-
@Gerve。除非您知道它无法访问,否则这样做没有意义。如果这是沼泽标准对象,即您不会搞乱非托管的东西。然后你需要找到所有指向你认为不可达的对象的东西,并在你调用 collect 之前确保它们也是不可达的。这通常是一些像 orderline 没有被收集的东西,因为它在一个订单行集合中。 IE。在你清除 order.orderlines 之前,它会挂起。
标签: c# wpf visual-studio-express