
|
If you were logged in you would be able to see more operations.
|
|
|
|
File Attachments:
|
|
|
Image Attachments:
|
|
|
Environment:
|
windows XP,
Java 1.5.0_06
windows XP,
Java 1.5.0_06
|
|
| Resolution Date: |
10/Jun/06 08:58 PM
|
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;
|
|
Description
|
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;
|
Show » |
| No work has yet been logged on this issue.
|
|