Мы пытаемся сравнить 2 CSV-файла размером 3 ГБ. Мы получаем ошибку памяти кучи java при попытке прочитать эти файлы с помощью чтения карт CSV. Скажите, кто-нибудь, пожалуйста, помогите мне решить эту проблему.Сообщение Java из памяти при чтении большого файла CSV
ответ
Одним из вариантов является расширение памяти для кучи. Первоначальный размер кучи по умолчанию составляет 128 мегабайт. У Java есть флаг, который вы можете передать, чтобы увеличить это значение.
Вы можете инициализировать размер кучи с помощью -Xms [size] или вы можете дать JVM максимальный размер кучи с -Xmx [size].
В вашем случае я бы использовал -Xms, чтобы придать программе больше памяти. Например, если вы хотите, размер кучи, чтобы начать на 512 МБ, то при запуске программы вы должны запускать:
java -Xms512m programName
Куча - это 1/4 основной памяти по умолчанию, если вы не используете 32-битную версию Windows. Если вам нужно обработать 3 ГБ файлов, вам, вероятно, потребуется 2-4 x этой кучи для загрузки сразу. –
Введите код – Daniel
Если вы читаете все содержимое CSV-файла в памяти сразу, то вы можете столкнуться с ошибками, если у вас недостаточно памяти для хранения содержимого. Вы пробовали читать, записывая свою программу, чтобы читать каждый файл по строке за раз и сравнивать их? или записать его для хранения 1 строки из файла и поиска всего другого файла для этого контента? – D3181