2012-08-03 5 views
1

동일한 .net 3.5 응용 프로그램의 2 가지 버전을 비교하기 전/후에 비교를 시도 할 때, 결과에 따라 일관성이 없습니다. 내가 사용하는 도구.어떤 typeperf 보고서와 다른 모든 도구 (mem 프로파일 러, 프로세스 탐색기, 전체 덤프) 사이의 불일치

typeperf - 나는 권위가 될 것 같아 - 말한다 :

  • v1의 2백44메가바이트/2백60메가바이트 (개인 바이트/작업 집합)
  • V2 : 281메가바이트/2백96메가바이트

프로세스 탐색기은 성능 그래프에서 다음 수치를 보여줍니다.

  • v1의 283메가바이트 (개인 바이트)
  • V2 : 262메가바이트

그래서 typeperf는 프로세스 탐색기 반대를 주장 v2에서 더 많은 메모리를 배가 도착했다.

이들은 모두 별도의 측정이며 다른 실행이지만 숫자는 놀라 울 정도로 안정적으로 재생산됩니다. 2 상기 도구 외에도

, 나는 또한 전체 메모리 프로세스 탐색기에서 덤프, 파일 크기에서만보고했다 (WinDbg를하는 시간이 있었다하거나 아직 분석하지 않은 경우) :

  • v1의 484메가바이트 (전체 덤프 파일 크기)
  • V2 : 480메가바이트 또한

, .NET 메모리 프로파일에서 응용 프로그램을 실행, 네이티브 메모리. 전체 메모리뿐만 아니라 넷 메모리도 v1보다 v2에서 더 낮습니다.

그래서 전 세계의 나머지 지역과 비교해 보면 형식적으로 보입니다 (아직 뛰어난 WinDbg 분석).

누가 옳고, 어떻게 알 수 있습니까?

답변

1

나는 문제가 무엇인지 잘 알고있다 : 나의 테스트에서 나는 GC에게 충분한 시간을주지 않고.

  • V1 만든 쓰레기와 그것에 대한 참조를 유지 (-> 메모리 누수), 그래서
  • 하지만 V2 만든 쓰레기를 정리하는 아무것도 없었다 및 참조를 발표했다.
메모리 프로파일 러를 사용하는 경우 전체 덤프를 복용 할 때 또는

의 GC 내가 개인 바이트 낙하를 기반으로 추측하고있어 이전에, 나는 사실을 알고 후자의 경우 (실행된다 상당히 덤핑 때)

그게 나를 설명해 준다.