Было бы полезно, если бы вы сообщили нам, какие типы переменных вы используете для хранения индекса документа и сообщаемых результатов.
Попробуйте запустить приложение создания отчетов в отдельной JVM отПроцесс индексации документов.
Индексация документов - это ресурсоемкая операция, и если она удерживает всю память, используемую во время индексации, а затем вы пытаетесь запросить индекс для отчета, он может потреблять еще больше.
Давайте посмотрим на трассировку стека сверху.Первые три строки (читаются в обратном порядке) показывают дымящийся пистолет.
Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap space at
java.util.Arrays.copyOf(Arrays.java:2760) at java.util.Arrays.copyOf(Arrays.java:2734) at
java.util.ArrayList.ensureCapacity(ArrayList.java:167) at java.util.ArrayList.add(ArrayList.java:351) at
JVM
- проверил размер массива, чтобы увидеть, достаточно ли он большой
- пытается скопировать массив (это поведение по умолчанию при выращивании вектора)
- исчерпывает доступную память и выдает исключение OutOfMemoryError
Трассировка стека не упоминаетсяточный массив, но он должен быть большим.
Вопрос: Как вы храните заполненный индекс и куда помещаете результаты отчета?Так как вы еще не сказали, какую структуру, я предполагаю на данный момент Вектор, который удобно использовать, когда вы не знаете, сколько у вас данных, но также очень расточительно, когда его емкость увеличивается.Если не указано иное, он будет удваиваться по размеру каждый раз, когда ему нужно больше места, поэтому начальный размер в 100 байт может быстро превратиться в десятки мегабайт, что почти наполовину из новой комнаты опустеет.
Следующие две строки взяты из вашего кода сообщения.Я бы предположил, что часть пользовательского интерфейса модуля отчетности имеет ссылку на массив / вектор / список, заполняемый данными.Сообщите нам, какой это тип.
reportingModule.PeerSearchUI.generateResults(PeerSearchUI.java:901) at
reportingModule.PeerSearchUI.setResultDetails(PeerSearchUI.java:833) at
Строка ниже подразумевает, что исключение происходит после того, как вы нажали кнопку, возможно, «Просмотр результатов», которая запускает отчет.
gui.form.WizardForm.ViewButtonActionPerformed(WizardForm.java:1372) at
Это означает, что результаты доступны и ожидают отображения.Если это так, то вам нужен лучший способ изолировать результаты.
Как насчет показа только одной страницы результатов за раз.Показать только первые 10 строк, затем показать следующие 10 и т. Д.