在我们的软件中,我们使用iTextSharp生成付款支票簿 在某些情况下,我们需要一次生成10 000个文件,我们在Windows服务下运行它,然后,我们遇到了以下问题: 生成完成后,服务的RAM非常大,通过我们调用GC.Collect并释放所有变量。
我花了一天时间来解决它,最后我发现:iTextSharp中的 FontFactoryImp 类有一个哈希表名称 fontFamilies ,它拥有许多内存而且永远不会被释放。详细地说,我发现它有许多重复的值!所以,我通过
清除哈希表来解决它iTextSharp.text.FontFactory.FontImp = new iTextSharp.text.FontFactoryImp();
GC.Collect(GC.MaxGeneration);
一切都很好,但看起来像是作弊。
问题是:我的解决方案有任何错误或风险吗?