内存要求
Aspose.Words 提供了广泛的功能来处理各种格式的文档。需要注意的是,Aspose.Words 可以处理或渲染的文档文件的最大大小没有限制。唯一的限制是您可用的 RAM(内存)量。
Aspose.Words 需要多少内存
通常,Aspose.Words 需要比文档大小多几倍的内存才能在内存中构建文档模型。例如,如果文档大小为 1 MB,则 Aspose.Words 需要 10-20 MB RAM 才能在内存中构建其 Document Object Model (DOM)。乘数取决于格式,因为某些格式比其他格式更紧凑。例如,DOCX比DOC和RTF更紧凑,DOC比RTF更紧凑。
没有确切的方法来估计 Aspose.Words 在处理任何特定文档文件期间实际消耗了多少内存。您可能知道 .NET 将数据存储在类中,每个类实例都会使用一些内存用于 CLR 内部用途。因此,任何段落或格式化文本(即使它只包含一个字符)在加载到 DOM 后都会占用一些额外的内存。而且,.NET垃圾收集器引擎使用复杂的算法来确定执行内存收集的最佳时间,因此很难确定实际的内存消耗。
如何计算内存量
让我们考虑两个文档:
- DOCX"A"文档 – 0.35 MB 大小(2000 页),纯文本
- DOCX"B"文档 – 0.35 MB大小(仅1页),内含PNG图像
如您所知,许多现代格式(例如 DOCX、ODT 等)都是简单的 ZIP 存档。于是,我们得到如下的计算算法:
- 解压。解压后的文档"A"大小为 20 MB,文档"B"大小为 0.4 MB
- 将文档加载到模型中(构建其 Document Object Model – DOM):
- 创建第一个文档"A"的 DOM 需要 49 MB 大小
- 创建第二个文档"B"的 DOM 仅需要 2 MB 大小。
- 测量将这些文档渲染为 PDF 所需的内存量。对于此操作,Aspose.Words 需要:
- 文档"A"为 294 MB
- 文档"B"为 7 MB
因此,正如您所看到的,输入文档大小不存在线性依赖性。有很多因素会影响所需的 RAM 大小 - 文档格式、其复杂性和结构、图像数量及其格式以及许多其他因素。
如何最准确地计算内存倍频
对数千个真实文档的实验表明,Aspose.Words 通常需要比平均文档大小多几倍的内存来在内存中构建文档模型并执行简单的操作,例如流格式之间的转换、mail merge、解析、替换等。有时我们谈论的是 2 的乘数,有时是 20。
对于某些文档来说,渲染(转换为固定页面格式)、更新字段、拆分页面等更复杂的操作需要比 Aspose.Words DOM 中加载的文档分配的内存多 20 倍的资源。
如果您的分析结果表明 Aspose.Words 中可能存在内存问题,请联系我们的 技术支援 并提供所有诊断信息。