Я написали код. Проблема, с которой я столкнулась, заключается в том, что когда «j» цикла for превышает 1000, я начинаю получать ошибку «превышение верхнего предела GC». Если я увеличиваю выделенную память до 4 ГБ, я могу повторить до 2000, после чего возникает одна и та же проблема. Я хочу сохранить этот вариант увеличения памяти в крайнем случае и хочу попытаться масштабировать мой код. Компилятор выделяет проблему с операторами, в которых я разместил стрелку. Может кто-нибудь, пожалуйста, назовите меня, что может быть возможной ошибкой здесь. я уже посетил этот вопрос Error java.lang.OutOfMemoryError: GC overhead limit exceededВерхний предел GC превышен в коде
for (int j=1; j<=num_doc; j++) {
List<Integer> list1 = new ArrayList<Integer>(Collections.nCopies(129039, 0));
BufferedReader fl = new BufferedReader(new FileReader(dataFolder+"file"+ " ("+j+")"+".int"));
String line1;
while((line1=fl.readLine()) != null) {
String[] arr=line1.split(" ");//<---------------------
line1="";
int k = Integer.parseInt(arr[0]);
Arrays.fill(arr, "");
numb=numb+1;
int temp=(list1.get(k))+1;
list1.set(k, temp);
}
F_d.add(numb);
numb=0;
fl.close();
ls2d.add(new ArrayList<Integer>(list1));//<---------------------
list1.clear();
}
ли вам ясный 'ls2d' где-то в вашем коде? –
Да ls2d используется. Я вставил только ту часть кода, которую выделяет компилятор. – Shahzaib
'list1' уже довольно большой, поэтому, если вы потратите свое время, чтобы добавить его в' ls2d', не очистив его, он быстро займет много памяти, что приведет к OOME –