您好,欢迎来到[编程问答]网站首页   源码下载   电子书籍   软件下载   专题
当前位置:首页 >> 编程问答 >> Java >> java inputStream 转换成byte[]内存溢出

java inputStream 转换成byte[]内存溢出

来源:网络整理     时间:2016/5/21 17:08:54     关键词:inputstream

关于网友提出的“java inputStream 转换成byte[]内存溢出”问题疑问,本网通过在网上对“java inputStream 转换成byte[]内存溢出”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:

问题:java inputStream 转换成byte[]内存溢出
描述:

小弟最近有这样一个需求,需要从网上下载一些东西并存入数据库(不写入文件,条件不够),而且都比较大,300M+,下载的过程没问题,但将下载下来的inputstream转换为array时,我使用ByteArrayOutputStream,结果一直outOfMemory。我蛋疼啊,但我要是直接使用preparedStatement.setBinaryStream(1,inputStream)时,就报 java.io.IOException: Premature EOFfileinputstream,bufferedinputstream,datainputstream,objectinputstream,pipedinputstream,bytearrayinputstream,getinputstream,filterinputstream,gzipinputstream,servletinputstream,imageinputstream,inputstream用法,inputstream和reader,inputstream子类,javainputstream求救!!求扩散!!@红薯 @滔哥 @虫虫


解决方案1:

下文件的时候,别把东西都压在内存里,读多少,就往本地文件里写多少。不要使用转array的方式。

解决方案2:

数据库 写的时候可能写不下 这么大的, 转 blob 看看, blob内部也是byte[] 数组, jdk 缓存 加大试试

解决方案3:

要么继续加大虚拟机内存,最少到1g起步,或者用文件缓冲。

解决方案4:

你用的ByteArrayOutputStream我刚才看了一下API,应该和ObjectOutputStream问题是一样的.这些对用的Inputsream应该也有这个问题.

建议看一下我的http://my.oschina.net/zhzhenqin/blog/123724 

这些流都提供一个reset方法. 定期的调用reset就不会了. 

为什么自己研究.

解决方案5:

300M写数据库,就算内存够你数据库吃得消吗?你的方案感觉有问题

解决方案6:

滔哥不会JAVA,友情帮顶.


以上介绍了“java inputStream 转换成byte[]内存溢出”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/1221831.html

相关图片

相关文章