我现在使用Android作为我的Netty客户端。和Windows一样我的Netty服务器。最近,我在Netty上发现了一个奇怪的行为。 当我打开服务器端应用程序时,内存只有30MB。 但几个小时后,它上升到300M。它的原始内存使用量是其10倍。 我打开服务器的时间越长,它会增加的内存越多。Netty服务器推送使用和内存泄漏
我不知道为什么会发生这种情况。这是正常的吗?
顺便说一句,因为Netty不支持内置的服务器推送功能。 因此,我使用静态方法的所有频道的存储在图:
public static final Map<Integer, Channel> mapConcurrentIdChannel = new ConcurrentHashMap<Integer, Channel>();
我映射信道ID频道。例如:当客户端A想要将消息推送到客户端B时,服务器将查找通道ID,从而获得通道实例,然后使用Channel.write(object)方法。 这是在Netty中实现Push Message功能的正确方法吗? (如果不是的话,你能否提供一个实现Push功能的好方法?因为没有官方文档提及) 另外,恐怕这个实现会导致我之前解释的“内存泄漏问题”。
关于使用通道组:
我的情况是,如果有5人,A,B,C,d,E有时,希望将消息发送到C,有时B想要发送消息到E 我无法预测什么时候有人会将消息发送给某人以及他们将发送给谁。所以我不能将所有5个人(连接)都添加到ChannelGroup中,写给该组的人会将消息广播给每个人。
我在Google上搜索了很长时间,对我现在面临的问题没有任何帮助。 希望听到来自Netty经验丰富的开发人员的一些建议,你!
谢谢!
你有没有发现被关闭被删除这个解决方案?会很好,如果你分享 – jbakirov