JavaFX graphicsContext.drawimage()outofmemory错误

时间:2016-07-24 20:36:22

标签: java javafx

这将是我在这里的第一篇文章,所以欢迎任何建议。

内存量增加的问题在于这段代码

private void drawChart(Canvas canvas) {
    GraphicsContext gc = canvas.getGraphicsContext2D();
    Img i = getRecentImage(); // it contains byte[] source (png format). Img is my own class
    Image i = new Image(new ByteArrayInputStream(i.getImageBytes()););
    gc.drawImage(i, 0, 0);
}

现在发生了什么。一段时间后,在加载了数百张这些图像(它们每个未压缩的100KB)之后,程序崩溃并出现了内存错误。

当我添加

gc.clearRect(0, 0, canvas.getWidth(), canvas.getHeight());

之前

gc.drawImage(i, 0, 0);

一切正常。

这段代码的问题是我不明白为什么清除区域(使其空白)不会造成内存泄漏。 drawImage()方法是否在某处保留对我的对象(byte []数组)的引用,直到它们被gc.clearRect()或...清除?我以为我只是复制粘贴byte []缓冲区,所以我一直在相同的gc内存上运行。

0 个答案:

没有答案