0

我正在与我的应用程序中的一些内存问题作斗争,并最终设法深入了解它。我最近有一个例子,在处理任务时我的进程内存高达 800mb。我现在已经设法让它稳定在 140mb,这是完全可以接受的。然而,这让我质疑我对 .NET 垃圾收集器的理解。我的内存问题是通过在每次使用后释放 2 个非 .NET 对象(TADOCommand 和 TDataSet - 在 delphi 中)来解决的。这些变量的范围是过程本地的,所以我认为它们应该被自动清除,因为没有任何东西应该引用它们。

那么,.NET 如何处理释放非 .NET 的对象呢?或者不是吗?

谢谢。

4

1 回答 1

3

它没有。.NET 垃圾收集器仅处理托管对象。其他一切都必须由其他东西来清理。

如果所述资源被托管类型封装,则可以使用 IDisposable 来实现清理。

于 2010-08-27T09:55:07.017 回答