代码之家  ›  专栏  ›  技术社区  ›  webnoob

.NET项目中非.NET类需要.NET GC澄清

  •  0
  • webnoob  · 技术社区  · 15 年前

    我正在与我的应用程序中的一些内存问题作斗争,并最终设法找到问题的根源。我最近举了一个例子,在处理任务时,我的进程内存高达800MB。我已经设法让这个以140MB的速度稳定下来,这是完全可以接受的。然而,这让我对.NET垃圾收集器的理解产生了疑问。我的内存问题是通过每次使用后释放2个非.NET对象(tadocommand和tdataset-in delphi)来解决的。这些变量的范围是过程的局部范围,因此我假定应该自动清除这些变量,因为没有任何变量应该引用它们。

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

    谢谢。

    1 回复  |  直到 15 年前
        1
  •  3
  •   Brian Rasmussen    15 年前

    它没有。NET垃圾收集器只处理托管对象。其他的一切都必须用别的东西来清理。

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

    推荐文章