Интересной особенностью JUnit является то, что он создает экземпляр класса теста для каждого запускаемого вами теста, и эти экземпляры не освобождаются для GC, пока не будут выполнены все тесты.
Таким образом, если вывыделите много данных для переменных экземпляра в вашем тестовом примере (как в методе generateCombitions, который запускается перед каждым тестом), вам нужно вручную деблокировать данные после теста.
Попробуйте добавить метод
@After
public void cleanup() {
allCombinations = null;
}
Мы создали инструмент, который делает это автоматически с отражением.
Если очистка тестовых классов не помогает, тогда вам просто нужно добавить больше памяти ...