Я использую алгоритм планирования с фрагментом сборки мусора, который выглядит следующим образом:
//garbage collection
if (state.children.isEmpty()) {//if this is a leaf node (no children)
state.parent.children.remove(state);
System.gc();
}
Сначала алгоритм работает плавно, без пауз;но через некоторое время, когда дерево начинает расти, возникает некоторая пауза в каждом gc.
Так что я подумал, может быть, вызываемый gc реже?И изменил мой код следующим образом:
//garbage collection
if (state.children.isEmpty()) {//if this is a leaf node (no children)
state.parent.children.remove(state);
if(index % 10000)
System.gc();
}
Но, похоже, на самом деле это не приводит к какой-либо очистке, моя программа в любом случае вызвала бы исключение outOfMemory.
Как мне реализовать мой сборщик мусораправильно, чтобы не вызывать слишком много раз?