我有一个任务,该任务根据输入事件在每次调用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()部分,则堆保持稳定。