Избегать «ошибки нехватки памяти» в Java (затмение) при использовании большой структуры данных?

Итак, я пишу программу, которая, к сожалению, должна использовать огромную структуру данных для завершения своей работы, но она завершается с ошибкой «нехватка памяти» во время инициализации. Хотя я полностью понимаю, что это значит и почему это проблема, у меня возникают проблемы с ее преодолением, поскольку моя программа должна использовать эту большую структуру, и я не знаю другого способа ее хранения.

Сначала программа индексирует большой объем текстовых файлов, которые я предоставляю. Это отлично работает.

Затем он использует этот индекс для инициализации большого 2D-массива. Этот массив будет иметь n² записей, где «n» - количество уникальных слов в корпусе текста. Для сравнительно небольшого фрагмента, который я тестирую (около 60 файлов), требуется примерно 30 000 × 30 000 записей. Это, вероятно, будет больше, как только я запусту его на своем полном корпусе.

Он последовательно терпит неудачу каждый раз, после того, как индексирует, пока инициализирует структуру данных (для дальнейшей работы).

Вещи, которые я сделал, включают в себя:

обновить мой код, чтобы использовать примитивint[] вместоTreeMapустранить избыточные структуры и т.д ...Кроме того, я запустил программу с-Xmx2g чтобы максимально использовать мою выделенную память

Я уверен, что это не будет простым решением кода, но, скорее всего, потребует совершенно нового подхода. Я ищу, что это за подход, какие-нибудь идеи?

Спасибо Б.

Ответы на вопрос(4)

Ваш ответ на вопрос