【发布时间】:2009-12-03 17:44:53
【问题描述】:
我以前曾问过这个问题,但我想重新表述/澄清一些观点并对其进行扩展。我有一段代码使用 AffineTransform 转换 BufferedImage。
op = new AffineTransformOp(atx, interactive ? interpolationInteractive : interpolationNormal);
displayImage = op.filter(displayImage, null);
此代码运行良好,但会导致内存累积。具体来说,每次调用这段代码时都会存储更多内存。我也尝试过其他形式的过滤器。
op = new AffineTransformOp(atx, interactive ? interpolationInteractive : interpolationNormal);
displayImage2 = op.createCompatibleDestImage(displayImage, displayImage.getColorModel());
op.filter(displayImage, displayImage2);
但是,这比第一个版本要慢得多。我想要第一个版本的速度和第二个版本的内存使用率。
- 第一个版本后如何清理?具体来说,中间的 BufferedImage 存储在哪里,如何删除它们?
- 为什么第二个版本比第一个慢?我该怎么做才能加快速度?
感谢您的帮助!!!
【问题讨论】:
-
您真的遇到 OutOfMemoryErrors 了吗?如果不是,那么这只是 GC 何时收集对象的问题,而不是实际的内存泄漏。
标签: java filter affinetransform