Я пытаюсь создать ArrayList с размером 10 000 000 двойных [400] массивов в качестве обучающих данных для моей нейронной сети, однако, поскольку список достигает размера около 200 000, мне не хватает места в памяти (выделено 2 ГБ) для программы). Мне нужен способ создания и получения доступа к такому списку без исчерпания пространства в куче.
Ниже у меня есть пример того, что я пытаюсь выполнить.
import java.util.ArrayList;
import java.util.Random;
public class Example {
static private ArrayList<double[]> data;
public static void main(String[] args) {
data = new ArrayList<double[]>();
double[] randomArr = new double[400];
Random random = new Random();
for(int i = 0; i < 10000000; i++) {
randomArr = random.doubles(400, 0, 1).toArray();
data.add(randomArr);
if(i % 10000 == 0) {
System.out.println(i);
}
}
}
}
После 370 000 итераций программа выдает исключение java.lang.OutOfMemoryError. Есть ли способ исправить это (без выделения большего количества оперативной памяти), и при этом иметь возможность достаточно быстро перебирать ArrayList данных?