mina-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jörg Michelberger (JIRA) <j...@apache.org>
Subject [jira] Created: (DIRMINA-772) First sent message is not garbage collected per session
Date Wed, 03 Mar 2010 16:24:27 GMT
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


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.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message