我正在与我的应用程序中的一些内存问题作斗争,并最终设法找到问题的根源。我最近举了一个例子,在处理任务时,我的进程内存高达800MB。我已经设法让这个以140MB的速度稳定下来,这是完全可以接受的。然而,这让我对.NET垃圾收集器的理解产生了疑问。我的内存问题是通过每次使用后释放2个非.NET对象(tadocommand和tdataset-in delphi)来解决的。这些变量的范围是过程的局部范围,因此我假定应该自动清除这些变量,因为没有任何变量应该引用它们。
那么,.NET如何处理释放不是.NET的对象呢?或者不是吗?
谢谢。
它没有。NET垃圾收集器只处理托管对象。其他的一切都必须用别的东西来清理。
如果所述资源由托管类型封装,则可以使用IDisposable来实现清理。