我有一个关于我的MINA客户端的小问题。Apache MINA不会删除未使用的数据
我只创建一个连接到服务器,然后服务器每隔一秒钟发送一些数据。
总之,客户端连接到服务器;服务器向客户端发送一个字符串,并且所有这些步骤都使用相同的打开连接(相同的客户端对象和客户端处理程序)。
但问题是,我认为,旧数据不是由GC收集的。使用的堆在几秒钟内变大,永不减少。我的messageReceived方法是空的!
public void messageReceived(IoSession session, Object message) { }
有什么想法吗?
我已经使用VisualVM监视系统并让它运行几分钟。正如我所料,使用的内存值增加,那么应用程序会抛出OutOfMemory异常。服务器向客户端发送字符串,我看到char []变量是增加的原因。客户端和服务器都有相互监听的线程。也许GC不收集字符(我不知道为什么)在线程?在这种情况下,我真的需要帮助 – ftb
GC不会清理您保留的任何内容。你应该寻找*什么是引用char [] *,因为这是阻止它被清理。顺便说一句,我怀疑你的程序实际上保留了'String',除非你知道否则。 ;) –
我看到,如果我创建一个新的Client对象,这意味着每次都有一个新的连接,则使用的mem不会增加。这意味着如果我杀死线程及其变量,则释放已用内存。 – ftb