Project: Tomcat
Bug 46075 FileUpload memory usage
Reported: 2008-10-23 03:35:53 | Status: resolved fixed

The DefaultFileItem class in pacakge org.apache.tomcat.util.http.fileupload creates a ByteArrayOutputStream of the full threshold size for every control on the submitted form. I have a form with 63 controls (checkboxes, text boxes and one File input), and I set the threshold to 20 Meg to allow upload of large image files into memory. I get an OutOfMemory exception since it tries to allocate 63 lots of 20M, although only 1 control requires the requested size. I think it would be much more sensible to create the ByteArrayOutputStream with an initial size of only a few kilobytes size it automatically increases its size as data is written to it.

Files changed in fix:
java/org/apache/tomcat/util/http/fileupload/DeferredFileOutputStream.java