Thank you for your responses. Yes it is true that the entire blob is in memory thus the impact on memory usage.
We are doing something similar to what the person who posted http://www.theserverside.com/discussions/thread.tss?thread_id=23125
and we are getting similar results in a similar environment (WLS 704 on Solaris)
I am aware of how to stream the content via the ServletOutputStream to the browser. My problem is our current J2EE architecture which involves us having to pass a value object over the network to the EJB for upload and to the WEB tier for download. As a result I cannot stream the blob content directly from the database to the browser.
 User clicks on the link to file they want to download.
 Application goes to database and retrieves attachment content based on the attachment ID.
 On the EJB tier a new persistent object called AttachmentContent with the appropriate content type (PDF, MS Word etc) is created in memory.
 Once AttachmentContent is constructed, an AttachmentContentDVO object is constructed with the values of AttachmentContent for passing the contents of AttachmentContent to the WEB tier of the application.
 The AttachmentContentDVO is sent over the network to the WEB tier. This involves the marshalling and demarshalling of the serializable AttachmentContentDVO.
 The WEB tier gets the AttachmentContentDVO object, opens a Servlet output stream to the browser and flushes the AttachmentContentDVO content to the user.
 Memory usage and the JVM (Java Virtual Machine or Java runtime environment). The creation of AttachmentContent and the AttachmentContentDVO objects means the amount of memory needed to send an Attachment to the browser is doubled. It also puts more strain on the JVM to properly garbage collect large amounts of memory used by Attachment content. It has been proven that concurrent download requests by multiple users can rapidly exhaust server memory resources leading to more frequent garbage collections by the JVM. Since large garbage collections by the JVM can greatly affect the next point - performance.
 Performance. The creation of AttachmentContent and the AttachmentContentDVO objects means the application spends time creating two memory objects with the same values. The marshalling and demarshalling of the AttachmentContentDVO object adds to the time taken to send the Attachment to the user.
Access the database straight from the web tier for attachment upload and downloads. This way we can stream the content straight from the db to the client browser.
Would like to hear anyone's thoughts.