겨울팥죽 여름빙수
article thumbnail
c#, SocketAsyncEventArgs 메모리 릭 현상

SocketAsyncEventArgs 객체를 이용해 데이터를 송수신 할 때, Buffer를 사용하게 된다. 문제는 이 Buffer를 사용하고 조치를 취하지 않으면, 가비지 컬렉션이 알아서 가져가지 않는다. 맨 처음 서버를 실행시키면, 100메가 정도 사용하던 메모리가 좀 오래 되면, 1기가 넘게 쌓여있다. 대충 계속 살펴보면 1~2기가 사이를 왔다갔다한다. SocketAsyncEventArgs 메모리 릭에 관련해 검색 해보니, SocketAsyncEventArgs객체를 풀링해서 사용해야 한다고 돼 있고, 또한, 사용 후 Dispose()함수를 호출 해, 리소스를 날려줘야 가비지 컬렉션이 수거 해 간다고 한다. 정리 해보면 SocketAsyncEventArgs 사용 후, Completed에 [-=]으로 콜..