0

我正在使用 C# .Net 开发一个 Windows 应用程序。这实际上是一个安装在 DBMS 中的插件。这个插件的目的是读取 DBMS 中的所有记录(记录是一个对象),匹配提供的条件并将它们作为 XML 文件传输到我的本地文件系统。我的问题与内存的使用有关。一切正常。但是,每次我读取一条记录时,它都会占用内存,并且在一定限制后,由于内存不足,插件停止工作。

我正在处理大约 10k-20k 的记录(对象)。C# 中是否有任何与内存相关的方法可以在将每条记录写入 XML 文件后立即清除它们的内存。我尝试了所有基本的内存处理方法,如 clear()、flush()、gc() 和 finalize()/ 但没有用。

请考虑他:

  • Record 是一个对象,我无法更改它并使用其他有效的数据结构。
  • 每次我读取记录时,我都会将它们写入 XML。并一次又一次地重复。
4

1 回答 1

0

C# 是一种垃圾收集语言。因此,要回收对象使用的内存,您需要确保删除对该对象的所有引用,以使其符合收集条件。具体来说,这意味着您应该在完成对它们的任何操作后,从任何持有对它们的引用的数据结构中删除这些对象。

如果您更具体地了解您使用的数据结构类型,我们可能会给出更具体的答案。

于 2012-08-20T02:06:09.443 回答