码迷,mamicode.com
首页 > 编程语言 > 详细

【JavaSE】Java问题总结

时间:2014-10-24 15:58:05      阅读:277      评论:0      收藏:0      [点我收藏+]

标签:android   style   blog   color   io   ar   使用   java   sp   

使用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问题总结

标签:android   style   blog   color   io   ar   使用   java   sp   

原文地址:http://www.cnblogs.com/smarterplanet/p/3798406.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!