Java 将大图像从midlet发送到servlet的替代方案
为了防止OutOfMemoryErrors,从midlet向servlet发送大映像的替代方案有哪些?您能解释一下当前的方法是如何导致OutOfMemoryError的吗?将图像分割成更小的部分是我马上想到的。问题是我使用的是HTTP协议,我只能发送一个请求,因此,尽管我将图像分割成了部分,但我必须重建它才能写入OutputStream。当您将其写入OutputStream时,内存会被填满,并出现OutOfMemoryError问题。理论上,您可以发送任意数量的HTTP请求。你是说你有一个限制,你只能发送一个?重建映像或将其写入OutputStream时,是否会发生Java 将大图像从midlet发送到servlet的替代方案,java,mobile,java-me,midlet,Java,Mobile,Java Me,Midlet,为了防止OutOfMemoryErrors,从midlet向servlet发送大映像的替代方案有哪些?您能解释一下当前的方法是如何导致OutOfMemoryError的吗?将图像分割成更小的部分是我马上想到的。问题是我使用的是HTTP协议,我只能发送一个请求,因此,尽管我将图像分割成了部分,但我必须重建它才能写入OutputStream。当您将其写入OutputStream时,内存会被填满,并出现OutOfMemoryError问题。理论上,您可以发送任意数量的HTTP请求。你是说你有一个限制,
OutOfMemoryError
?我没有想到OutputStream.write
会导致OOME,因为它应该以块的形式发送数据,而不是一次发送所有数据。我知道我只能向服务器发送请求,然后接收响应。OutOutOfMemoryError位于OutputStream.write上。如果您希望以块的形式发送请求,则必须使用“传输编码=块”将其设置为“手动”。。。问题是诺基亚s40系列不支持它,除非在通过网络发送图像数据之前,OutputStream
保留了所有图像数据,否则我希望它在写入时会刷新。这就是为什么我很惊讶当使用OutputStream.write()
时会得到OOME。虽然诺基亚的API可能不直接支持分块编码,但您可以自己编写该层。您只需要访问输出流就可以设置正确的头并写入分块数据。