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