我現在使用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