C# 数据集或数据表的WriteXml是否使用内存?

C# 数据集或数据表的WriteXml是否使用内存?,c#,.net,vb.net,C#,.net,Vb.net,我有一个包含10000多行的数据表 在什么时候,我会: Dim oTable As New System.Data.DataTable ' ..... ' Filling the DataTable ' ..... oTable.writeXml("MyFile.xml") writexml使用内存还是硬盘 我测试了一下,发现它占用了很多内存 写入文件通常使用文件流。所以它不应该使用内存 我错了吗?我认为WriteXML进食记忆是不正常的。刚刚测试了一个表中的287120行,导出的XML的大小

我有一个包含10000多行的数据表

在什么时候,我会:

Dim oTable As New System.Data.DataTable
' .....
' Filling the DataTable
' .....
oTable.writeXml("MyFile.xml")
writexml使用内存还是硬盘

我测试了一下,发现它占用了很多内存

写入文件通常使用文件流。所以它不应该使用内存


我错了吗?

我认为WriteXML进食记忆是不正常的。刚刚测试了一个表中的287120行,导出的XML的大小接近200MB——内存使用量保持不变。将该表加载到内存中,然后在编辑器中打开它,大约需要1.2GB。运行WriteXML后,内存消耗在这4-5秒内保持不变,可能会上升或下降1MB


您如何填写数据表?如果您使用的是一些延迟加载技术,这可能解释了内存使用率高的原因,但这不是由WriteXML造成的,而是由数据本身造成的。

我认为WriteXML消耗内存是不正常的。刚刚测试了一个表中的287120行,导出的XML的大小接近200MB——内存使用量保持不变。将该表加载到内存中,然后在编辑器中打开它,大约需要1.2GB。运行WriteXML后,内存消耗在这4-5秒内保持不变,可能会上升或下降1MB


您如何填写数据表?如果您使用的是一些延迟加载技术,这可能解释了内存使用率高的原因,但这不是由WriteXML造成的,而是由数据本身造成的。

您是如何测量内存的?很可能在下一次GC之前,您会看到写入磁盘的缓冲区未释放。我打开了windows任务管理器,同时解除了Bug。我可以看到,当我使用writexml时,内存的使用量增加了500 MB。任务管理器不测量内存消耗,它测量Ok我同意,但当我执行oTable.Reset和GC.Collect时,内存下降了2 GB。我还想知道在实现中是否需要确定它是否使用内存或硬盘。你测量的是错误的东西。同样,这是工作集,不是内存。这是虚拟内存。你是如何测量内存的?很可能在下一次GC之前,您会看到写入磁盘的缓冲区未释放。我打开了windows任务管理器,同时解除了Bug。我可以看到,当我使用writexml时,内存的使用量增加了500 MB。任务管理器不测量内存消耗,它测量Ok我同意,但当我执行oTable.Reset和GC.Collect时,内存下降了2 GB。我还想知道在实现中是否需要确定它是否使用内存或硬盘。你测量的是错误的东西。同样,这是工作集,不是内存。这是虚拟内存。事实上,我完成了这个项目。我在200多万行、100列和3gb内存计算机上测试它。这就是它坠毁的原因。但正如你所说,我花了大约200毫克。@billybob:如果你能有200万行,你根本不应该使用DataTable,而是切换到DataReader。它将使整体性能成倍增长。根据我的经验,DataTable在大表上变得非常慢。很高兴知道。我根本不知道我可以使用DataReader。事实上,我完成了这个项目。我在200多万行、100列和3gb内存计算机上测试它。这就是它坠毁的原因。但正如你所说,我花了大约200毫克。@billybob:如果你能有200万行,你根本不应该使用DataTable,而是切换到DataReader。它将使整体性能成倍增长。根据我的经验,DataTable在大表上变得非常慢。很高兴知道。我根本不知道我可以使用DataReader。