Создание массивных списков ArrayLists и доступ к ним без использования кучи - PullRequest
0 голосов
/ 13 января 2019

Я пытаюсь создать 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 данных?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...