java关闭文件句柄_java-JAI关闭文件句柄为时过早吗?
我正在使用JAI读取Java中的Tiff文件.
使用此代码:
RenderedOp renderer = JAI.create("fileload", tifFilename);
return renderer.getAsBufferedImage();
在使用Java 7的一个盒子上工作正常,但在使用Java 8的其他盒子上工作得很好:
Caused by: com.sun.media.jai.codecimpl.util.ImagingException
at com.sun.media.jai.codecimpl.ImagingListenerProxy.errorOccurred(ImagingListenerProxy.java:63)
at com.sun.media.jai.codecimpl.TIFFImage.getTile(TIFFImage.java:1087)
at javax.media.jai.RenderedImageAdapter.getTile(RenderedImageAdapter.java:148)
at javax.media.jai.NullOpImage.computeTile(NullOpImage.java:162)
at com.sun.media.jai.util.SunTileScheduler.scheduleTile(SunTileScheduler.java:904)
at javax.media.jai.OpImage.getTile(OpImage.java:1129)
at javax.media.jai.PlanarImage.copyData(PlanarImage.java:2343)
at javax.media.jai.RenderedImageAdapter.copyData(RenderedImageAdapter.java:163)
at javax.media.jai.RenderedOp.copyData(RenderedOp.java:2299)
at javax.media.jai.PlanarImage.getAsBufferedImage(PlanarImage.java:2525)
at javax.media.jai.PlanarImage.getAsBufferedImage(PlanarImage.java:2546)
at ...
Caused by: com.sun.media.jai.codecimpl.util.ImagingException: IOException occured while reading TIFF image data.
... 17 more
Caused by: java.io.IOException: Stream Closed
at java.io.RandomAccessFile.seek0(Native Method)
at java.io.RandomAccessFile.seek(RandomAccessFile.java:557)
at com.sun.media.jai.codec.FileSeekableStream.read(FileSeekableStream.java:168)
at com.sun.media.jai.codec.SeekableStream.readFully(SeekableStream.java:318)
at com.sun.media.jai.codecimpl.TIFFImage.getTile(TIFFImage.java:1081)
... 16 more
解决方法:
我的理论是,垃圾回收正在启动并完成一些本不该进行的工作.很奇怪.替换为:
try (SeekableStream seekableStream = new FileSeekableStream(filename)){
TIFFDecodeParam param = null;
ImageDecoder dec = ImageCodec.createImageDecoder("tiff", seekableStream, param);
// convert to buffered image if desired
return new RenderedImageAdapter(dec.decodeAsRenderedImage()).getAsBufferedImage(); // convert to buffered image
}
问题似乎消失了.我的猜测是,因为FileSeekableStream的句柄保留在局部变量范围内,所以未过早收集它.可能还有其他JAI方法也可以做到这一点,只要确保在输入流上保留自己的句柄即可[?]
不确定是否也适用于其他图像格式
标签:java,garbage-collection,jai
来源: https://codeday.me/bug/20191013/1909758.html
java关闭文件句柄_java-JAI关闭文件句柄为时过早吗?相关推荐
- java 关闭时_java – 活动关闭时服务停止
我已经阅读了一些与这个问题相关的答案,它们似乎都是一样的: "使用START_STICKY运行您的服务" "在前台运行您的服务" "使用startSe ...
- java 自定义 钩子_Java添加关闭钩子里面的方法
在我的代码中,我使用CompletionService和ExecutorService来启动一堆Thread来执行某些任务(这可能需要很长时间) . 所以我有一个创建ExecutorService和C ...
- Java中的接口命名[关闭]
本文翻译自:Interface naming in Java [closed] Most OO languages prefix their interface names with a capita ...
- java 关闭dos_java批处理启动 关闭
简单批处理文件 @echo off title 1.bat d: cd !cd! start cmd /c "title DataCenter && java -jar Da ...
- java.io.IOException: 远程主机强迫关闭了一个现有的连接。
参考文档: (2条消息) 解决redis中java.io.IOException: 远程主机强迫关闭了一个现有的连接_zeal9s的博客-CSDN博客_redis远程主机强迫关闭了一个现有连接怎么解决 ...
- java.io.IOException: 远程主机强迫关闭了一个现有的连接
摆脱烦恼最有效的是慢思考,为什么和我想的不一样,出入在哪里,什么导致的? 疑惑 我使用netty框架接受数据,每隔半个小时存储数据,运行不到三个小时报错 java.io.IOException: 远程 ...
- 关于Redis出现“java.io.IOException: 远程主机强迫关闭了一个现有的连接”的一次排查
背景 最近在使用springboot(Windows下)连接redis(云服务器)开发时发现一些问题:连接成功的情况下,在一段时间未交互数据后,再次通过连接与Redis传输数据回出现异常java.io ...
- 强制关闭java的输出,关闭err输出,关闭out输出
强制关闭java的输出,关闭err输出,关闭out输出 public static void main(String[] args) {System.err.println("错误日志输出& ...
- SpringBoot整合Redis:java.io.IOException: 远程主机强迫关闭了一个现有的连接。或者控制台报连接超时异常
场景: 项目启动过后 Redis 连接过一会就会断开,报如下问题: 问题1: 2022-12-05 23:05:18.287 ERROR 10752 --- [sson-netty-1-11] o.r ...
- java io操作_Java IO 操作
IO操作 Java对数据的操作都是通过流的方式,IO流用来处理设备之间的数据传输,文件上传和文件下载,Java用于操作流的对象都在IO包,NIO(New IO)包中. 创建文件 Java创建文件的方式 ...
最新文章
- Taylayout 底部的滑动线高度设置
- 战术上的勤奋掩盖不了战略上的懒惰
- oracle--pl/sql变量定义----
- 图像重建算法_降噪重建技术路在何方?
- 当yum 遇到No more mirrors to try
- 07-图4 哈利·波特的考试 (25 分)
- 2017年php还能火多久,PHP还会火吗?
- 分式混合运算20道题_FAG剖分式调心滚子轴承的性能
- 太极发送卡片软件_QQxml卡片消息发送-防撤回等等安卓QQ插件Notified-支持太极框架 -发送QQ卡片消息...
- c++ CImage类的常用命令
- 玩许多计算机游戏的英语,玩电脑游戏英语作文
- python数字类型中包含了哪三种类型_Python数字类型中包含了________、________和_________三种类型。...
- 维生素C(抗坏血酸)摄入过多有啥后果?
- altium designer自动布线设置GND或其他网络不布线的方法
- 营销活动思维导图系列(共55份)
- 常量(Constant)
- 《经济学讲义 上》 李俊慧 读书笔记
- 台式电脑win7计算机无法启动,台式机无法开机怎么重装win7系统
- linux虚拟主机ping不通域名
- Wall的LocationCurve获得的墙基线位置 是否与墙的定位线有关?
热门文章
- Netty学习总结(5)——Netty之TCP粘包/拆包问题的解决之道
- Maven学习总结(26)——maven update时,报:Preference node org.eclipse.wst.validation...
- Git学习总结(12)——多人开发 Git 分支管理详解
- nginx linux windows 忽略大小写_React 基础 在 Windows 下使用 React , 你需要注意这些问题...
- stm08S单片机C语言编,STM8S单片机入门1(开发环境搭建)
- Spring Boot的自动配置的原理
- 菜鸟入门【ASP.NET Core】6:配置的热更新、配置的框架设计
- 洛谷——P1706 全排列问题
- [unity3d]再次修改socket聊天,完美的服务器端
- 计算机原理基础-原反补