Проблемы с памятью при отрисовке / DrawLine Graphics2D - PullRequest
0 голосов
/ 01 июля 2019

У меня есть задача, которая рисует линии (лоты) на одном и том же 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 (), куча остается стабильной.

...