У меня есть задача, которая рисует линии (лоты) на одном и том же BufferedImage при каждом его вызове, основываясь на входных событиях.
Я заметил, что использование кучи проходит через крышу, наращивая сотни мегабайт только благодаря этой операции. Есть ли причина, по которой это могло бы произойти? Процедура отрисовки как-то отслеживает нарисованные операции или что-то подобное?
редактировать (MWE):
public class TestAwtDraw {
public static void main(String[] args) {
BufferedImage jImg = new BufferedImage(1024, 1024, BufferedImage.TYPE_INT_ARGB);
Graphics2D g = jImg.createGraphics();
Random rd = new Random();
long nDrawn = 0;
g.setColor(new Color(255, 160, 122, 200));
while (nDrawn++ < 1e5)
g.drawLine(rd.nextInt(1024), rd.nextInt(1024), rd.nextInt(1024), rd.nextInt(1024));
}
Если я удаляю часть setColor (), куча остается стабильной.