(полное раскрытие: оригинальный автор RegexBasedCleanupStrategy
здесь)
RegexBasedCleanupStrategy
не предназначено для использования таким образом.Вы создаете 200 экземпляров этого класса, каждый из которых будет проходить по документу, чтобы увидеть, могут ли они сопоставить (фрагмент за фрагментом) PDF-файл с регулярным выражением.
Для этого они сохранятвсе фрагменты в документе, отсортируйте их, а затем зациклите их.
Таким образом, вы дублируете документ 200 с лишним раз в памяти.Это ваше узкое место.
Мое предложение: создать лучшее регулярное выражение.Очевидно, вы можете сопоставить ключевое слово a, b, c и т. Д. С регулярным выражением
(a)|(b)|(c)
Это скопирует документ в памяти только один раз, а затем попытается сопоставить совокупное регулярное выражение с ним.
Обладает преимуществами как производительности, так и объема памяти.