背景:
我在Eclipse+tomcat下使用http协议的post方法向服务器上传大文件的时候出错。
Error:
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
at java.util.Arrays.copyOf(Arrays.java:2271)
at java.io.ByteArrayOutputStream.grow(ByteArrayOutputStream.java:113)
at java.io.ByteArrayOutputStream.ensureCapacity(ByteArrayOutputStream.java:93)
at java.io.ByteArrayOutputStream.write(ByteArrayOutputStream.java:140)
at sun.net.www.http.PosterOutputStream.write(PosterOutputStream.java:78)
at api.FileOperation.Upload(FileOperation.java:167)
at api.Test.main(Test.java:163)
方法一:设置JVM VM参数,Eclipse->Run->Run Configuration->vm arguments->-Xms512m -Xmx1024m
此时上传178M数据成功,但是当上传更大的数据的时候仍旧出现问题。
方法二:将http链接设置为断点续传模式。
httpCon.setChunkedStreamingMode(1024);
现在上传大数据成功。