2017-03-21 4 views
5

Asp.net 코어가 쓰레기를 수집하지 않는 이유를 이해할 수 없습니다. 지난 주에 며칠 동안 웹 서비스를 실행하고 메모리 사용량이 20GB에 도달했습니다. GC가 작동하지 않는 것 같습니다. 그래서 이것을 테스트하기 위해 문자열의 대량 컬렉션을 반환하는 매우 간단한 웹 메서드를 작성했습니다. 응용 프로그램은 124MB 만 사용하여 시작했지만 웹 메서드를 호출 할 때마다 메모리 사용량이 411MB에 도달 할 때까지 점점 더 높아지고있었습니다. 웹 메서드를 계속 호출하면 더 높아질 것입니다. 그러나 나는 시험을 그만두기로 결정했다. GC가 작동하지 않는 이유Asp.net 코어가 쓰레기를 수집하지 않음

enter image description here

는 아는 사람 있나요? 성능 모니터에서 볼 수 있듯이 GC가 호출되었습니다 (그래프의 노란색 표시). 그러나 그것은 메모리에서 쓰레기를 수집하지 않았습니다. 나는 GC가 그것을 참조하지 않은 것을 열심히 수집 할 것이라고 생각한다.

어떤 도움을 주시면 대단히 감사하겠습니다. 감사! :)

+0

가비지 수집을위한 적절한 테스트라고 생각하지 마십시오. 원인 .net 더 많은 메모리가 필요할 때 메모리에 힙을 만듭니다. 그러나 수집 할 때 즉시 힙을 줄이지는 못합니다. 그것은 시간이 지남에 그것을 할 것입니다. 원인은 힙을 릴리스하는 것보다 리소스를 많이 사용하는 것입니다. 그러나 여러 번 호출 할 때 동일한 힙을 다시 사용해야합니다. 비동기없이 시도해 볼 수 있습니까? 무슨 일이 일어나고 있는지보고 싶니? –

+0

안녕하세요 @ HenrikBøgelundLavstsen, 비동기 웹 메서드를 제거하고 다시 테스트하지만 이번은 동기 메서드로. 나는 여전히 같은 기억 문제를 겪고있다. 따라서 비동기 문제가 아닌 것처럼 보입니다. 당신이 말했듯이, 같은 메모리 공간이 모든 호출과 함께 재사용되어야합니다. 그러나 모든 호출로 메모리 사용량이 증가합니다. 이것은 조금 당황 스럽다. – Zorthgo

+0

또한 Kestrel뿐만 아니라 IIS에서도 테스트를 수행했습니다. 불행히도 둘 다 같은 행동을 보입니다. – Zorthgo

답변

0

서버가 100,000,000 * 4 자 ~ 411MB의 출력을 캐시하고 있습니다.

관련 문제