[ https://issues.apache.org/jira/browse/SSHD-810?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16403884#comment-16403884 ]
Goldstein Lyor commented on SSHD-810: ------------------------------------- Your description is a little unclear - there are *3* maps in the hierarchy - one in the _Nio2Service_, one in _Nio2Session_ and the other in the _Nio2Acceptor_ - and *2* of them are {{ConcurrentHashMap}} - the ones in the _Nio2Service_ and _Nio2Acceptor_ (the one on the _Nio2Session_ is a simple _HashMap_). However your description somehow refers to the _NioSession_ instead of the _Nio2Acceptor_ and/or _Nio2Service_ which may be the one supposedly "leaking": {quote} close and destory the Nio2Session {quote} so I am not sure how that would help (even assuming there is a leak as you claim). However, to answer your question - the {{Session}} interface (which both _ClientSession_ and _ServerSession_ implement) exposes {{IoSession getIoSession()}} - which will return the _Nio2Session_ instance through which the SSH session was created. *Caveat emptor:* you must ask: {code:java} Session sshSession = ...your session... IoSession ioSession = sshSession.getIoSession(); if (ioSession instanceof Nio2Session) { ..do whatever you think will fix the problem... } {code} since there are (at least) *2* implementations of {{IoSession}} - only one of which is _Nio2Session_ (the other being _MinaSession_). Some inspection of the _Nio2Acceptor_ code does not reveal any reason for its associated map to grow beyond a few entries - unless you do lots of port forwarding - which does not seem to be the case since you mention only SFTP. As far as {quote} close and destory the Nio2Session {quote} goes, there should be no need - the SSH session automatically closes the associated _IoSession_: {code:java|title=AbstractSession} @Override protected Closeable getInnerCloseable() { return builder() .parallel(toString(), getServices()) .close(getIoSession()) .build(); } {code} What I would like to suggest is the following: # Try version 1.7 - it contains quite a few fixes - although I do not remember one specifically related to such a "leak" it does contain some memory management improvements # Clone, compile and try [the 1.7.1-SNAPSHOT version|https://github.com/apache/mina-sshd] - it also contains a few more memory management fixes/improvements. # Open the DEBUG/TRACE levels of the _Nio2Session_, _Nio2Acceptor_ classes and try to figure out whether all open sessions are closed (eventually). > mina sshd 1.6.0, using as sftp server, run for about one month, found that > there is too many ConcurrentHaspMap objects in Nio2Acceptor. > ---------------------------------------------------------------------------------------------------------------------------------------- > > Key: SSHD-810 > URL: https://issues.apache.org/jira/browse/SSHD-810 > Project: MINA SSHD > Issue Type: Bug > Affects Versions: 1.6.0 > Reporter: young_shaw > Priority: Blocker > Labels: memleak, sshd > Attachments: memleak2.png > > Original Estimate: 168h > Remaining Estimate: 168h > > For example, the instance of "org.apache.sshd.common.io.nio2.Nio2Acceptor" > which adress is "0x732137c40" occupies 2,224,510,720 (71.65%) bytes.Its > memory is mainly accumulated by the instance of > "java.util.concurrent.ConcurrentHashMap$Node[]" "0x744a55fb8" loaded by the > class "bootstrap class loader". > I am wondering where can I close and destory the Nio2Session. Please help me, > thank you. > !memleak2.png! -- This message was sent by Atlassian JIRA (v7.6.3#76005)