james-server-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Bernd Fondermann <bf_...@brainlounge.de>
Subject Re: [jira] Commented: (JAMES-512) OutOfMemoryError -- object not released.
Date Tue, 30 May 2006 09:54:16 GMT

Well, sure. But first things first :-)

I am currently running it against the unpatched 2.3 branch.
Then I'll try the patch against 2.3 and test again.
(I will not try a patched 2.2.0, maybe someone else wants to...)

I think we have to be careful calling it a fix. The OOM exception might 
be fixed, but we still have to confirm this does not introduce new 
problems. I really want to understand more deeply what the patch does. 
Simply had now time yet to have a closer look...

   Bernd

Norman Maurer wrote:
> Can you please use the fixed attached version of the Class and run it
> again against postage ?
> 
> Thx
> Norman
>   
> Am Dienstag, den 30.05.2006, 09:08 +0000 schrieb Bernd Fondermann
> (JIRA):
> 
>>    [ http://issues.apache.org/jira/browse/JAMES-512?page=comments#action_12413788
] 
>>
>>Bernd Fondermann commented on JAMES-512:
>>----------------------------------------
>>
>>I can reproduce the bug under James 2.2.0 with the following Postage szenario:
>>
>>    <scenario id="release_james512" runtimeMinutes="480"><!-- 8h=480, 1d=1440,
3d=4320 -->
>>        <users>
>>          <internal count="1" username-prefix="test_int" domain="mail.james.local"
password="test" reuseExisting="yes" />
>>          <external count="0" username-prefix="test_ext" domain="mail.sample.com"
/>
>>        </users>
>>        <profiles>
>>            <profile name="ext-int" source="extern" target="intern">
>>            </profile>
>>            <profile name="int-ext" source="intern" target="extern">
>>            </profile>
>>            <profile name="int-int" source="intern" target="intern">
>>               <send count-per-min="25" subject="int2int" text-size-min="10" text-size-max="20"
binary-size-min="0" binary-size-max="0"  />
>>               <send count-per-min="25" subject="int2int" text-size-min="10" text-size-max="20"
binary-size-min="0" binary-size-max="0"  />
>>               <send count-per-min="25" subject="int2int" text-size-min="10" text-size-max="20"
binary-size-min="0" binary-size-max="0"  />
>>               <send count-per-min="25" subject="int2int" text-size-min="10" text-size-max="20"
binary-size-min="0" binary-size-max="0"  />
>>               <send count-per-min="25" subject="int2int" text-size-min="10" text-size-max="20"
binary-size-min="0" binary-size-max="0"  />
>>               <send count-per-min="25" subject="int2int" text-size-min="10" text-size-max="20"
binary-size-min="0" binary-size-max="0"  />
>>               <send count-per-min="25" subject="int2int" text-size-min="10" text-size-max="20"
binary-size-min="0" binary-size-max="0"  />
>>               <send count-per-min="25" subject="int2int" text-size-min="10" text-size-max="20"
binary-size-min="0" binary-size-max="0"  />
>>               <send count-per-min="25" subject="int2int" text-size-min="10" text-size-max="20"
binary-size-min="0" binary-size-max="0"  />
>>               <send count-per-min="25" subject="int2int" text-size-min="10" text-size-max="20"
binary-size-min="0" binary-size-max="0"  />
>>
>>               <send count-per-min="25" subject="int2int" text-size-min="10" text-size-max="20"
binary-size-min="0" binary-size-max="0"  />
>>               <send count-per-min="25" subject="int2int" text-size-min="10" text-size-max="20"
binary-size-min="0" binary-size-max="0"  />
>>               <send count-per-min="25" subject="int2int" text-size-min="10" text-size-max="20"
binary-size-min="0" binary-size-max="0"  />
>>               <send count-per-min="25" subject="int2int" text-size-min="10" text-size-max="20"
binary-size-min="0" binary-size-max="0"  />
>>               <send count-per-min="25" subject="int2int" text-size-min="10" text-size-max="20"
binary-size-min="0" binary-size-max="0"  />
>>               <send count-per-min="25" subject="int2int" text-size-min="10" text-size-max="20"
binary-size-min="0" binary-size-max="0"  />
>>               <send count-per-min="25" subject="int2int" text-size-min="10" text-size-max="20"
binary-size-min="0" binary-size-max="0"  />
>>               <send count-per-min="25" subject="int2int" text-size-min="10" text-size-max="20"
binary-size-min="0" binary-size-max="0"  />
>>               <send count-per-min="25" subject="int2int" text-size-min="10" text-size-max="20"
binary-size-min="0" binary-size-max="0"  />
>>               <send count-per-min="25" subject="int2int" text-size-min="10" text-size-max="20"
binary-size-min="0" binary-size-max="0"  />
>>
>>            </profile>
>>        </profiles>
>>        <testserver host="localhost">
>>          <smtp-forwarding port="2525" latecomer-wait-seconds="120"/>
>>          <smtp-inbound port="25" />
>>          <pop3 port="110" count-per-min="10" />
>>          <remotemanager port="4555" name="root" password="root" />
>>          <spam-account name="spam-sink" password="spam-sink" />
>>          <jvm-resources jmx-remoting-port="10201" />
>>        </testserver>
>>    </scenario>
>>
>>
>>>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
>>>    Priority: Critical
>>>     Fix For: 2.3.0a4
>>> Attachments: 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;
>>
> 


---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org


Mime
View raw message