Требования к памяти
Aspose.Words предоставляет широкий спектр возможностей для работы с документами различных форматов. Важно отметить, что максимальный размер файла документа, который Aspose.Words может обработать или отобразить, не ограничен. Единственным ограничением является объем RAM (памяти), доступный на вашей стороне.
Сколько требуется памяти Aspose.Words
Обычно Aspose.Words требуется в несколько раз больше памяти, чем требуется для создания модели документа в памяти. Например, если размер вашего документа равен 1 MB, то для создания объектной модели документа (DOM) в памяти Aspose.Words потребуется 10-20 MB из RAM. Коэффициент умножения зависит от формата, поскольку некоторые форматы более компактны, чем другие. Например, DOCX более компактно, чем DOC и RTF, а DOC более компактно, чем RTF.
Нет точного способа оценить, сколько памяти Aspose.Words на самом деле потребляет при обработке любого конкретного файла документа. Как вы, возможно, знаете, Java хранит данные в классах, каждый экземпляр класса использует некоторую часть памяти для внутренних целей JVM (Java виртуальная машина). Таким образом, любой абзац или форматированный текст (даже если он состоит из одного символа) после загрузки в DOM занимает некоторое количество дополнительной памяти. Кроме того, механизм сбора мусора Java использует сложный алгоритм для определения наилучшего времени для выполнения сбора памяти, что затрудняет определение реального потребления памяти.
Как рассчитать объем памяти
Давайте рассмотрим два документа:
- DOCX “A” документ – размер 0.35 MB (2 тысячи страниц), только текст
- DOCX “B” документ размером 0.35 MB (всего 1 страница) с изображением PNG внутри
Как вы знаете, многие современные форматы, такие как DOCX, ODT и т.д., представляют собой простые архивы ZIP. Итак, мы получаем следующий алгоритм расчета:
- Разархивирование. Разархивированный документ “A” имеет размер 20 MB, документ “B” имеет размер 0.4 MB
- Загрузка документа в модель (построение объектной модели документа – DOM):
- Для создания DOM первого документа “A” требуется размер 49 MB
- Для создания DOM второго документа “B” требуется всего 2 MB размера.
- Измерение необходимого объема памяти для преобразования этих документов в PDF. Для этой операции Aspose.Words требуется:
- 294 MB для документа “A”
- 7 MB для документа “B”
Итак, как вы можете видеть, линейной зависимости от размера входного документа нет. Существует множество факторов, которые могут повлиять на требуемый размер RAM – формат документа, его сложность и структура, количество изображений и их формат и множество других факторов.
Как наиболее точно рассчитать множитель памяти
Эксперименты с тысячами реальных документов показывают, что обычно Aspose.Words требует в несколько раз больше памяти, чем средний размер документа, для создания модели документа в памяти и выполнения простых операций, таких как преобразование между форматами потока, mail merge, синтаксический анализ, замена и так далее. Иногда речь идет о множителе, равном 2, а иногда и 20.
Более сложные операции, такие как рендеринг (преобразование в фиксированные форматы страниц), обновление полей, разделение страницы и другие, для некоторых документов требуют в 20 раз больше ресурсов, чем объем памяти, выделенный документом, загруженным в Aspose.Words DOM.
Если результаты вашего профилирования указывают на возможную проблему с памятью в Aspose.Words, пожалуйста, свяжитесь с нашим Команда поддержки и включите всю диагностическую информацию.