Я работаю с Структура данных ArrayList для работы с файлом cvs.Моя машина довольно мощная: Память: 8 ГБ ОЗУ процессора: 4 ЦП, каждое i5 Intel Core 2.5 ГГц
В eclipse я назначил -Xmx5120m (5 ГБ ОЗУ для java vm) с помощью панели аргументов vmв Run as-> Конфигурация.
Я все еще получаю «вне памяти кучи Java» для моего ArrayList<ArrayList<String>>
, если оно больше, чем 468000 X 108. Я использую arraylist, потому что я чувствую себя наиболее комфортно с ним, и это облегчает обработкуданные для моей цели.
На самом деле, я использую этот двумерный массив для контекста на основе столбцов, например
arraylist.get(i).get(0)
, где
0 < i < 468000
будет представлять один столбец.Поскольку я выполняю такие операции, как (замена столбца другим столбцом, копирование столбца, вставка столбца в произвольную позицию в arrayList и т. Д.), Я мог думать только о arrayList, потому что он амортизировал постоянное время для добавления или вставки вarraylist в его среднем случае.
Итак, теперь мой вопрос:
Какие другие структуры данных я мог бы использовать вместо arraylist, чтобы достичь величины, значительно превышающей 468000 X 108 (например,например (833 * 1000000) X 108) и сможете ли выполнять все операции, о которых я упоминал выше?(но я все еще хочу быть в состоянии сделать это на моей машине, используя имеющуюся у меня емкость)
Я мог бы подумать о том, чтобы делать все это последовательно, то есть сначала обработать 468000 X 108 и записать его в CSVфайл, а затем снова загрузить его в архиватор 468000 X 108 и записать его в другой файл и т. д. *
Не думаю, что я достиг предела массива для моего архива.
Буду признателен за любую помощь.