0
我已經創建了一些遊戲服務器,並且我只用大約10個配對進行了測試。一切都很順利,我們玩了大約10分鐘,並且在遊戲的某個時候,遊戲服務器停止爲客戶端提供服務,斷開所有人連接,並且我的連接到運行遊戲的VPS的SSH也斷開連接(我不確定爲什麼),但在斷開連接之前,我總是得到這個消息:嚴重:泄漏:ByteBuf.release()在垃圾收集之前未被調用。 Netty
Sep 20, 2017 5:14:11 PM io.netty.util.ResourceLeakDetector reportUntracedLeak
SEVERE: LEAK: ByteBuf.release() was not called before it's garbage-collected. Enable advanced leak reporting to find out where the leak occurred. To enable advanced leak reporting, specify the JVM option '-Dio.netty.leakDetection.level=advanced' or call ResourceLeakDetector.setLevel() See http://netty.io/wiki/reference-counted-objects.html for more information.
我需要調試並瞭解這條信息的真正含義,這是什麼錯誤的方向。
我真的不知道我的代碼需要什麼部分來弄清楚。
private void decodeData(ChannelHandlerContext ctx, ByteBuf buffer, List<Object> out) {
if (buffer.readableBytes() >= length) {
ByteBuf data = buffer.readBytes(length);
out.add(new Packet(opcode, data));
setState(PacketDecodeState.OPCODE);
}
}
我看完數據後,我不叫buffer.release()
因爲那會不會真的處理任何數據包,只是一種錯誤的行爲,我敢肯定,這是錯誤的把它放在那裏。