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