Graphics2D的draw / drawLine出现内存问题

时间:2019-07-01 06:46:59

标签: java swing memory draw

我有一个任务,该任务根据输入事件在每次调用BufferedImage时在同一BufferedImage上绘制线条。 我注意到,由于此操作,堆的使用量不断增加,累积了数百mb。有什么理由会发生这种情况吗?绘制例程是否以某种方式跟踪绘制的操作或类似操作?

编辑(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()部分,则堆保持稳定。

0 个答案:

没有答案