.NET Memory Management

3개의 좋아요

잘 정리된 내용이네요. 제가 봤던 gc관련 인강이 있는데 이 아티클과 내용이 비슷한데 좀 더 자세히 다루고 있어서 소개합니다.

https://www.udemy.com/share/10281iBEMZdVtVRHg=/

이 강의를 완독하고 gc에 대한 이해가 많이 높아졌습니다.

그런데 TestServer라는 클래스는 처음봐서 찾아보니 msdn에 있는 닷넷 api네요… 나중에 이것도 알아보는 것으로 ㅎㅎ

또한 httpclient의 경우 dispose를 해도 소켓 바인딩이 풀리지 않아 dispose가 의미없다는 글을 봤는데, 그에 따라 꼭 httpclientfactory를 통해 httpclienthandler를 미리 정의해두고 찍어내는 것이 좋다고 합니다. 혹시 모르시는 분들을 위하여 링크 남깁니다…

2개의 좋아요

수정할 내용이 생긴 듯 합니다.

마소에서 해주니까 믿고 그러려니 했는데, 음…영알못인 제가 이해한 바에 따르면 IHttpClientFactory를 사용하더라도 완전하게 관리가되지는 않나봅니다.

SimpleInjector를 사용하면서 Generic host를 쓸 때처럼 IHttpClientFactory를 사용해보려 했더니 관련된 글을 찾았는데요, 2019년 글이라 확인은 필요한 부분 같습니다. (저 글이 써질 때는 .NET Core 3.1이 막 발표된 직후입니다. 현재는 .NET 5입니다.)

IHttpClientFactory.CreateClient() 를 통해 HttpClient는 관리를 할 수 있지만, 밑에 있는 HttpClientHandler가 관리가 되지 않는다고 합니다. 테스트 글도 있네요. 제가 알기로 따로 HttpClientHandler를 구현해서 사용하지 않더라도 기본적으로 사용되는 HttpClientHandler가 있는 거로 아는데…

또한 저자가 IHttpClientFactory.CreateClient()로 생성된 HttpClient의 경우 Dispose() 메서드의 호출이 불필요하다는 말에 대해서 반박하며, IDisposable 인터페이스가 구현된 객체에 대해서는 사용 후 Dispose를 호출해 주는 것이 상식이라고 하며, 설사 의미가 없더라도 꼭 호출을 할 것을 권고하네요.

문제가 해결되었으면 좋겠네요.

3개의 좋아요