[ http://issues.apache.org/jira/browse/JAMES-512?page=comments#action_12414045 ]
Bernd Fondermann commented on JAMES-512: ---------------------------------------- The patch fixed the worst problem. Instead of running into permanent unrecoverable OOMs after 30 minutes, it now lasts for around 100 minutes. In between though, we occaisonlly 'hit' the max heap ceiling. hitting the ceiling is accompanied by prompting logs like these: "mailstore: Exception retrieving mail: java.lang.RuntimeException: Exception caught while retrieving an object, cause: java.io.EOFException, so we're deleting it." they go away, as the heap recovers. the used heap starts to grow again, hits max, recovers. this all is repeated 2 or 3 times. finally, as we get "Exception in thread "RMI TCP Connection(341)-169.254.11.222" java.lang.OutOfMemoryError: Java heap space" James is unable to recover. note: my max heap is 64 MB. > OutOfMemoryError -- object not released. > ---------------------------------------- > > Key: JAMES-512 > URL: http://issues.apache.org/jira/browse/JAMES-512 > Project: James > Type: Bug > Components: MailStore & MailRepository > Versions: 2.2.0 > Environment: windows XP, > Java 1.5.0_06 > Reporter: Quande Ren > Assignee: Noel J. Bergman > Priority: Critical > Fix For: 2.3.0a4 > Attachments: james-512.patch, picture.GIF > > I use the file system to store the emails. > When I run the James for a long time, the james server used more and more > heap memory, eventually it runs out of memory and refuse to receive email. > only restart the james will work. > I used JProfile Memory Debugger(you can get the trial version from > www.quest.com) and found a clue. the object allocated from following code at > line 92 does not always get released, cause the memory been used up > eventually. I will attach a picture file showing the call stack. > 91, final OutputStream outputStream = getOutputStream( key ); > 92, final BufferedOutputStream stream = new BufferedOutputStream( > outputStream ); > 93 > 94, final Object o = m_outputs.get( key ); > 95, if( null == o ) > 96, { > 97, m_outputs.put( key; stream ); > 98, } > 99, else if( o instanceof ArrayList ) > 100, { > 101, ( (ArrayList)o ).add( stream ); > 102, } > 103, else > 104, { > 105, final ArrayList list = new ArrayList(); > 106, list.add( o ); > 107, list.add( stream ); > 108, m_outputs.put( key; list ); > 109, } > 110 > 111, return stream; -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]