“Exception in thread "main" java.lang.OutOfMemoryError: Java heap space ”

本文详细介绍了在Eclipse+Tomcat环境下使用HTTP协议的POST方法上传大文件时遇到的Java堆空间不足错误,通过调整JVM参数和设置HTTP链接断点续传模式,成功解决了内存溢出问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

背景:

我在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);

现在上传大数据成功。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值