[
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