Да я знаю, что в Java объекты нельзя удалить вручную - сборщик мусора работает так, как захочет. Вопрос не про это.
Есть тесты с TestNG.
Один из этих тестов делает два скриншота и сравнивает, насколько они похожи.
Этот тест повторяется около 50 раз для разных веб-сайтов, но уже где-то на 20м вылетает с OutOfMemory.
При отладке выяснилось, что org.testng.Reporter при каждом assert (или при каждом тесте) полностью логирует все properties объекта теста, в котором есть эти два скриншота, которые занимают много места.
Сами скриншоты записываются на диск, и в org.testng.Reporter не нужны, но как сделать так, чтобы они туда не попадали?
Я пробовал вот так, но они всё равно попадают в org.testng.Reporter, который висит в памяти и до последнего не сбрасывается на диск:
frameImg = takeEmbeddedScreenshot()
actualImg = takeActualScreenshot(url)
boolean compareRes = compareScreenShots(frameImg, actualImg, "build/screenshots/proxy")
frameImg = null
actualImg = null
System.gc ()
assert compareRes, "Too many differences between the two panes, this URL fails: ${url}"