james-server-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Norman Maurer ...@byteaction.de>
Subject Re: [jira] Commented: (JAMES-512) OutOfMemoryError -- object not released.
Date Fri, 02 Jun 2006 10:05:11 GMT
Before applied the patch of Stefano or after ?

bye
Norman

Am Freitag, den 02.06.2006, 09:48 +0000 schrieb Bernd Fondermann (JIRA):
>     [ http://issues.apache.org/jira/browse/JAMES-512?page=comments#action_12414390 ]

> 
> Bernd Fondermann commented on JAMES-512:
> ----------------------------------------
> 
> a db configuration runs into memory problems (Xmx=64m) after less than two hours, too.
> 
> (this is a setup where 500 mails are created per minute, which is quite a load: 30 000
mails/hr!)
> 
> 
> 
> 
> 
> 
> > 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;
> 

Mime
View raw message