Вместо того, чтобы создавать строки, я предлагаю вам использовать символ фиксированной длины [] для чтения содержимого файла, скажем, 10K символов за раз.Определите размер символа [] в зависимости от того, какой максимальный размер символов в строке.Затем переберите символ char [] и найдите запятую.Как только вы нашли запятую, сохраните позицию в int [].Итак, int [0] говорит о первой позиции запятой, int [1] - второй запятой и так далее.Повторно используйте int [] для каждой строки.
Таким образом, вы никогда не будете объявлять переменные для каждой строки.Таким образом, нет GC накладных расходов.Все, что вам нужно сделать, это прочитать значение каждого поля из большого символа [], используя позиции, хранящиеся в int [], и извлечь из этого смысл.