js 멀티 플레이어 게임에서 메모리 누수가 발생했습니다. 나는 클라이언트가 서버에 연결될 때 많은 콜백을 묶는다. 내 질문은 플레이어의 테이블에서 소켓을 삭제하기 전에 콜백을 바인딩 해제해야합니까? 플레이어의 다음 소켓을 삭제하기 전에 바인딩 해제 콜백이 필요합니까?
Player.prototype.viewPortListenerInit = function(){
var self = this;
this.socket.on('clientViewPortResize', function(data){
self.clientViewPort = data;
});
};
목록에 플레이어를 추가/HashSet의 :
this.list[socket.id] = new Player(socket);
그리고 여기가 삭제됩니다 : 여기
내 샘플 콜백입니다socket.on('disconnect', function(){
delete this.list[socket.id]
});
https://www.alexkras.com/simple-guide-to-finding-a-javascript-memory-leak-in-node-js/ 나는 단지 이것을 훑어 보았지만 아마 모든 것을 제거하는 것을 잊어 버린 것처럼 들리네. 물건에 대한 참조. –
"삭제"란 무엇을 의미합니까? 그리고 그것을 어디로부터 풀어 낼 것입니까? 정말로해야 할 일은 이벤트를 트리거하는 곳의 소켓에 대한 참조를 제거하는 것입니다. – Bergi
나는 선수 명단이 있는데 나는 다음과 같이 삭제를 수행한다 : delete this.list [socket.id]; – peterSweter