首页 > 代码库 > 【JavaSE】Java问题总结
【JavaSE】Java问题总结
使用BufferedInputStream时OutOfMemoryError异常
使用BufferedInputStream时OutOfMemoryError异常。
为了InputStream可以重复读取,我们会把某个InputStream实例用BufferedInputStream装饰。
BufferedInputStream bis = new BufferedInputStream(is);bis.mark(Integer.MAX_VALUE);//while bis.read(...)bis.reset
实际上是BufferedInputStream将mark之后的数据存起来,调用reset时恢复,因此,当InputStream数据过多时,就会出问题,尤其是我在手机上做Android开发时,当数据超过13K时,就可能出内存不足,即抛下下面的异常:
java.lang.RuntimeException: An error occured while executing doInBackground()…………Caused by: java.lang.OutOfMemoryError at java.io.BufferedInputStream.fillbuf(BufferedInputStream.java:156) at java.io.BufferedInputStream.read(BufferedInputStream.java:309) at java.io.InputStream.read(InputStream.java:163) at ……
因此,mark方法需要记录的字节数目上限尽量不要设置成Integer.MAX_VALUE。
【JavaSE】Java问题总结
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。