[ 
https://issues.apache.org/jira/browse/DIRMINA-772?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Emmanuel Lecharny resolved DIRMINA-772.
---------------------------------------

       Resolution: Fixed
    Fix Version/s: 2.0.5

Fixed with http://svn.apache.org/viewvc?rev=1359483&view=rev

Sorry for the loooong delay !
                
> First sent message is not garbage collected per session
> -------------------------------------------------------
>
>                 Key: DIRMINA-772
>                 URL: https://issues.apache.org/jira/browse/DIRMINA-772
>             Project: MINA
>          Issue Type: Bug
>    Affects Versions: 2.0.0-RC1
>         Environment: WinXP JDK 1.6.1_18
>            Reporter: Jörg Michelberger
>              Labels: memory_leak, security
>             Fix For: 2.0.5
>
>
> Hi there,
> I did a heap dump of my application containing MINA 2.0.0RC1 and found a lot 
> of my messages not garbage collected.
> I use ProtocolCodecFilter. 
> After a investigation with VisualVM I found my already sent messages stucking 
> in a DefaultWriteRequest as attribute message. 
> The DefaultWriteRequest is attribute writeRequest in 
> ProtocolCodecFilter$ProtocolEncoderOutputImpl. 
> ProtocolCodecFilter$ProtocolEncoderOutputImpl stucks with key ENCODER_OUT in 
> the sessions attribute map. 
> WriteRequest in ProtocolCodecFilter$ProtocolEncoderOutputImpl is not released 
> after flushing...
> The attribute ENCODER_OUT is never removed from attributes.
> Seems that only first Message stucks ProtocolEncoderOutputImpl as result of 
> constructor call of ProtocolCodecFilter line 543. ProtocolEncoderOutputImpl 
> is stored for later usage in ProtocolCodecFilter line 298, but only for 
> providing public void write(Object encodedMessage) API.
> Hmm, ProtocolEncoderOutputImpl should store not the whole WriteRequest, only 
> significant data.
> ProtocolCodecFilter.java
>     private ProtocolEncoderOutput getEncoderOut(IoSession session,
>         NextFilter nextFilter, WriteRequest writeRequest) {
>         ProtocolEncoderOutput out = (ProtocolEncoderOutput) 
> session.getAttribute(ENCODER_OUT);
>         
>         if (out == null) {
>             // Create a new instance, and stores it into the session
>             out = new ProtocolEncoderOutputImpl(session, nextFilter, 
> writeRequest);
>             session.setAttribute(ENCODER_OUT, out);
>         }
>         
>         return out;
>     }
> Regards
>       Jörg Michelberger

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira


Reply via email to