OutOfMemory Error doing FTP GET


Win2K (2 GIG RAM)
IS 4.6 (Service Pack 1)


Getting ‘OutOfMemory’ error when doing a GET on a 60 MB file. Seems odd - I’ve got enough memory on the machine and in the java VM. Do I need to increase it higher? Anyone else had this issue?

Any feedback would be appreciated - Thanks…


I don’t know what else you have running on your box, but if you can afford it, bump the memory up to min/max 1024MB.

Also, examine your thread setup. Look at the Admin console and check your max threads and then go look at the server.cfg to check what your min/max thread pool settings.

Too few (default is min 10, max 75) will cause your services to queue up, too many could also cause your problem. Setting the JVM memory in the server.bat/sh file will more than likely solve your problem.

Hope this helps.


Is the file XML?
Note that a XML parse tree Node object is non-trivial size (it has to keep lists of children, parent reference, a current in-scope namespace list, list of attributes and the value itself, etc). The webM parser doesn’t create a copy of the value, because it points a reference to the input stream data from the parse tree node, so there aren’t two copies of the data in memory during parsing, as with some parsers.

But it would not surprise me if a 60M XML file took 600M of RAM once parsed.

Usually large files have a logical ‘repeating chunk’, that can be processed fully before another chunk is read. If so, see the WmPublic pub.web:nodeIterator service and the WmSamples sample.complexMapping example for how to use the streaming features of the IS XML parser.


Fred -
Thanks for the reply. Actually, the file is not XML. We aren’t
actually interrogating any of the message payload. I am doing a remote FTP
into a UNIX server and then executing the pub.client.ftp:get flow service.
Looks like the get service is loading the entire payload of the message in
memory, specifically into an object type called ‘content’. Not exactly what
I want to do.

Any other ideas?

I am going to explore using SAMBA to set up a Unix share so that I can
reference it like another Windows machine in the domain (via UNC) -
Hopefully then I can do a straight put, give it a localFile argument.
Hopefully that won’t load the entire payload into memory. Basically, that is
what I am looking to do. If you have any other ideas, let me know…


Please check your Java machine version. The one shipped is a verry hungry memory eater.

I am using sun’s 1.3.1_08 and a lot of out of memory errors solved…