我的理论是,垃圾回收正在启动并完成一些本不该垃圾回收的工作。很奇怪。替换为:
try (SeekableStream seekableStream = new FileSeekableStream(filename)){ TIFFDepreParam param = null; ImageDeprer dec = ImageCodec.createImageDeprer("tiff", seekableStream, param); // convert to buffered image if desired return new RenderedImageAdapter(dec.depreAsRenderedImage()).getAsBufferedImage(); // convert to buffered image}
问题似乎消失了。我的猜测是因为
FileSeekableStreams不会过早收集,因为它的句柄仍在局部变量范围内。可能还有其他JAI方法也可以做到这一点,只要确保在输入流上保留自己的句柄即可[?]
不确定是否也适用于其他图像格式
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)