У меня есть несколько циклов for-each, которые я использую для перебора элементов XML-файла конфигурации очень небольшого размера (2 КБ на диске) для динамического получения исходного URL-адреса и целевого URL-адреса. Затем я извлекаю данные из исходного URL-адреса с помощью URLGenerator
(поскольку он выполняет потоковую передачу) и загружаю их в базу данных XML с помощью процессора XForms Submissions. Исходный URL-адрес и целевой URL-адрес вычисляются динамически, и самые внутренние циклы, в которых происходит извлечение и загрузка, происходят в общей сложности около 32 раз, каждый раз с XML-файлом в среднем около 4,5 МБ (макс. около 6 МБ, минимум несколько КБ). ). Каждый раз, когда я пытаюсь это сделать, я получаю сообщение об ошибке нехватки памяти для Tomcat, работающего с щедро выделенными размерами permgen и кучи, JVM 32-разрядная, ОС 32-разрядная; Мне нужен выход из этой ошибки нехватки памяти:
- Я думал, что отдельные отправки XForms будут отдельными транзакциями, поэтому они не будут накапливаться, вызывая проблему нехватки памяти.
- Есть ли способ выполнить потоковую загрузку с использованием процессора XForms Submissions вместо создания полного документа в памяти?
- Я не знаю, поможет ли это, но есть ли способ выполнить агрессивную сборку мусора в Orbeon, чтобы у меня не было проблем с нехваткой памяти?
Если нужно, я могу опубликовать код здесь (для XPL).
Исходный код (в ответ на комментарий, запрашивающий его)