var xpSfile = string.Format("{0}.xps",Guid.NewGuid().ToString());
var paginator = ((IDocumentPaginatorSource)preview.Document).DocumentPaginator;
using (var xpsDoc = new XpsDocument(xpSfile, FileAccess.ReadWrite, CompressionOption.Maximum))
{
using (var xpp = new XpsPackagingPolicy(xpsDoc))
{
using (var rsm = new XpsSerializationManager(xpp, false))
{
rsm.SaveAsXaml(paginator);
rsm.Commit();
xpsDoc.Close();
}
}
}
1、生成一份xps文档增加2M内存,循环生成1000份,内存只增不减,无法释放
2、等到内存涨到1G左右,就会报错“打开文件“C:\WINDOWS\FONTS\SIMSUN.TTC”时 I/O 错误。”
3、网上说的 GC.Collect();SetProcessWorkingSetSize、EmptyWorkingSet都不好使
找到原因是WPF实例化后不会释放内存,不知道为什么,尽量少实例化WPF对象,
又发现新问题 PdfSharp.Xps.XpsConverter.Convert(pdfXpsDoc, fileName, 0);占用内存极高,也是无法释放,还没解决