【发布时间】:2011-10-31 11:13:59
【问题描述】:
环境:.net 4.0
我有一个使用 XSLT 样式表转换 XML 文件的任务,这是我的代码
public string TransformFileIntoTempFile(string xsltPath,
string xmlPath)
{
var transform = new MvpXslTransform();
transform.Load(xsltPath, new XsltSettings(true, false),
new XmlUrlResolver());
string tempPath = Path.GetTempFileName();
using (var writer = new StreamWriter(tempPath))
{
using (XmlReader reader = XmlReader.Create(xmlPath))
{
transform.Transform(new XmlInput(reader), null,
new XmlOutput(writer));
}
}
return tempPath;
}
我有 X 个线程可以并行启动此任务。 有时我的输入文件大约 300 MB,有时只有几 MB。
我的问题:当我的程序尝试同时转换一些大的 XML 文件时,我得到了 OutOfMemoryException。
如何避免这些 OutOfMemoryEception ?我的想法是在执行任务之前停止一个线程,直到有足够的可用内存,但我不知道该怎么做。或者还有其他一些解决方案(比如将我的任务放在一个不同的应用程序中)。
谢谢
【问题讨论】:
-
您使用的是哪个版本的 .NET Framework?
-
32 位程序非常很少会缩小其 VM 大小或取消对其地址空间进行分段。使用 64 位操作系统。
-
@hans : 是的,但正如你所知,从 32 位升级到 64 位有点意思,我们实际上没有升级硬件/操作系统的计划。
标签: c# xml out-of-memory