commons-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Mike Samuel <msam...@google.com>
Subject Fileupload: fails for forms with a large number of inputs with OurOfMemoryError
Date Thu, 09 Oct 2003 20:49:45 GMT
The fileupload package is well-architected, and a pleasure to use, but I ran
into a problem.  Attached is a test case servlet which repeats the problem with
the Jun 24, 2003 fileupload-1.0 release.

FileUploadBase.parseRequest runs out of memory when parsing a form with a large
number of inputs.  The cause seems to be DeferredFileOutputStream which
allocates a ByteArrayOutputStream per input, each of which preallocates a buffer
of length inMemoryThreshold.  The in memory threshold defaults to 10k, but if it
is made larger (> 1 M in our environment), then the vm quickly runs out of
memory.  Most of this memory is wasted since most files are ~5k, and almost all
non-file inputs are less than 1k.

I patched DeferredFileOutputStream to use a different underlying in memory
stream.  I don't really know why ByteArrayOutputStream uses a single byte[],
since you can't do random access on the underlying buffer anyway.
I think the patch is something that could be incorporated into the default file
upload implementation without any noticable change in performance.

If anyone's interested in the patch, should I send it to someone, or check it in
myself?  I've never contributed any code to apache before so I'm a little fuzzy
on process.

thanks,
    mike


Mime
View raw message