2011-11-25 2 views
7

C# .NET 응용 프로그램에서 생성 된 많은 수의 소프트 페이지 오류를 피할 수 있습니까?

는 알아요 ... 나는 C의 # .NET 윈폼 응용 프로그램을 프로파일 링 그리고 난 그것이 소프트 페이지 오류의 수백만을 생성하는 것으로 나타났습니다과 작업하는 동안 계속 증가했다가 페이지 오류의 .NET에서 수 응용 프로그램이 생성하는 대개는 높지만 수백만 페이지 오류가 너무 많이 보인다 ... 응용 프로그램이 GC와 경쟁 조건을 트리거 한 것으로 보입니다.

이런 상황을 초래할 수있는 알려진 코드 조각이 있습니까? 코드에 없으면 페이지 폴트 수를 줄일 수있는 .NET 프레임 워크의 일부 숨겨진 설정이 있습니까?

소프트 페이지 폴트가 점점 더 많이 생성되는 것을 피할 수 있습니까?

+0

도움이 될 케어? 이 결함들은 얼마나 걸립니까? 부드러운 결함이 디스크에서 읽지 않는다는 것을 알고 있습니까? –

+0

예 소프트 결함이 디스크를 읽지 않는다는 것을 압니다. 그러나 그 수는 거대하고 계속 증가하고 있습니다 ... 정상입니까? 나는 그것이 정상적인 행동이라고 생각하지 않는다. – aleroot

+2

정상적인 동작은 난수를 무시하고 문제를 해결하는 데 집중하는 것입니다. 이것은 문제입니까, 아니면 당신이 관찰 한 임의의 숫자입니까? –

답변

4

문제가되지 않는다면이 문제를 혼자 남겨 둘 것을 권장합니다. 성능 문제가있는 경우 - 대부분의 페이지 폴트를 생성하는 코드를 시도하고 격리하십시오 - 아마도 큰 메모리 풋 프린트 객체를 사용하고있는 곳일 것입니다.

"안전하지 않은"코드를 가능한 한 격리되고 간단하게 유지하십시오. 모든 안전하지 않은 코드를 클래스 또는 함수에 캡슐화합니다. .NET GC를 망쳐 버리면 대부분 불필요한 합병증을 유발할 수 있습니다.

확인은 안전하지 않은 도입의 비트에 대한이 문서는 (그것은 조금 오래된하지만 여전히 사실이다) : 또한 http://www.codeproject.com/KB/cs/unsafe_prog.aspx

, 당신은 GC가 수집 될 때까지의 시간을 길렀다이 왜 당신을