Hi Mike,
thx for the hints. I updated and tracked down the memory issue.
It's actually that java's buffering the whole file before beginning
the streaming to the user.
Any ideas on how to prevent that?
tia
W
Mike Quentel (4DM) schrieb:
> Try upgrading to the latest JVM. Analyse threads in JConsole. Might there
> need to be some blocks of code set to synchronised?
>
> Perhaps you have already done the above; but these are good ways to rule out
> the sources of leaks, as well as to diagnose the issues.
>
>
> ------Original Message------
> From: [email protected]
> To: [email protected]
> ReplyTo: MyFaces Discussion
> Subject: Java Heap Space
> Sent: 16 Jun 2009 04:36
>
> Hi %,
>
>
> I'm facing a wired issue with the java heap space which is close
> to bringing me to the ropes.
>
> The short version is:
>
> I've written a ContentManagementSystem which needs to handle
> huge files (>600mb) too. Tomcat heap settings:
>
> -Xmx700m
> -Xms400m
>
> The issue is, that uploading huge files works eventhough it's
> slow. Downloading files results in a java heap space exception.
>
> Trying to download a 370mb file makes tomcat jump to 500mb heap
> (which should be ok) and end in an Java heap space exception.
>
> I don't get it, why does upload work and download not?
> Here's my download code:
>
> byte[] byt = new byte[1024*1024*2];
>
> response.setHeader("Content-Disposition", "attachment;filename=\"" +
> fileName + "\"");
>
> FileInputStream fis = null;
> OutputStream os = null;
>
> fis = new FileInputStream(new File(filePath));
> os = response.getOutputStream();
>
> BufferedInputStream buffRead = new BufferedInputStream(fis);
>
> while((read = buffRead.read(byt))>0)
> {
> os.write(byt,0,read);
> os.flush();
> }
>
> buffRead.close();
> os.close();
>
>
> If I'm getting it right the buffered reader should take care of any
> memory issue, right?
>
> Is there a chance that JSF interferes my tomcat settings?
> Any help would be highly appreciated since I ran out of ideas.
>
> Best regards,
>
> W
>