2013-03-11 10 views
0

ANTS 프로파일 러를 사용하여 응용 프로그램에서 메모리 사용을 프로파일 링하는 중입니다. Excell 셀 오브젝트가 2 세대에 대량의 메모리를 보유하고 있음을 보여줍니다. 응용 프로그램은 EPPlus 라이브러리를 사용하여 Excel 파일을 생성합니다.ANTS 프로파일 러로 생성 그래프 이해

도구로 생성 된 그래프 중 일부를 첨부하고 있습니다. 나는 어떤 물체가 참조 번호 &을 차지하고 있는지 알아 내기 위해 더 깊이 훈련하는 방법을 모르겠다. 그래프를 깊이 파고 드는 방법에 대한 제안을하십시오. 이 그래프를 다시 TP 동일한 개체 점수

Instance Graph_2

enter image description here

문제가

Instance graph_1

Summary Chart

. 나는이 도구를 적절히 사용하지 않을 것이라고 생각한다.

그 엑셀 객체가 메모리에 나 안하면 (어떻게 외부 관찰자가 이러한 예를 들어, 객체를 캐시 여부되었는지를 알 것)을 알고, 개발자, 당신에게

답변

0

Firstly-에만 감사? Dispose가 이러한 객체에 대해 호출되었는지 여부에 대한 정보를 표시 할 수 있습니다.

둘째 - 대형 오브젝트 hap fragmentation에 대한 경고를 어디에서 보았습니까? 나는 그것을 먼저 조사 할 것이다.

+0

답장을 보내 주셔서 감사합니다. 내가 첨부 한 첫 번째 grpah를 보면 가장 큰 조각은 약 41.17 MB (여유 메모리의 27.4 %)입니다. 나는 그것이 너무 많이 이해하고 싶다? 이 번호에 대해 걱정해야합니까? 그렇다면 내 다음 조치는 무엇입니까? 고마워요 – SharpCoder

+0

제가 말할 수있는 바로는 - 아마도 * 아닙니다. * 시간이 지남에 따라 일어날 일들을 관찰하십시오. 시간이 지남에 따라 기억이 위로 올라가지 않으면 * 괜찮습니다.하지만 누출에 대해 생각하기 시작하면됩니다. 이 도구는 객체가 메모리에 남아있는 이유를 알려줍니다 (그렇지 않을 수도 있습니다). 그래도 과학보다 예술에 가깝습니다.) –

0

당신은 내가 각 스냅 샷에 대한 워크 플로우의 문맥을 결여하고 (요약 화면에서) 촬영 한 두 개의 스냅 샷을 보면, 그래서 몇 가지 가정 만들려고 오전 :

스냅 샷 한 것은 : 당신이를 만들기 전에이다 엑셀 파일. 스냅 샷 2 : Excel 파일을 만든 후이 작업이 완료된 것으로 간주됩니다.

먼저 워크 플로를 약간 조정하고 다음 스냅 샷을 수행하는 것이 좋습니다.

스냅 샷 1 : Excel 파일을 만들기 전에 찍은 사진입니다.

스냅 샷 2/3 : 응용 프로그램 워크 플로에 따라 다름. 데이터를 생성 한 경우 (이 파일을 볼 수있는 경우),이 데이터의 사실 이후에 파일을 만든 다음 데이터 생성 후 스냅 샷을 만든 다음 파일 생성 후 다른 파일을 만듭니다.

최종 스냅 샷 : 최종 스냅 샷 하나를 가져옵니다. 완료 자 워크 플로가 완료되면 최종 마무리 큐를 지우는 데 필요한 메모리를보다 잘 파악할 수 있습니다.

몇 가지 스크린 샷에서이 작업을 수행하기가 어렵 기 때문에 여기서 답을 얻지 못할 것입니다. 단지 조언 - 응용 프로그램에 대한 지식이없고 데이터 캐싱과 같은 원하는 메모리 사용에 대한 가정을합니다.

(a) 범주화 된 참조가 선택된 인스턴스 분류기보기를 사용하면 맨 위 (유일한) 참조 체인에서 시작하여 오른쪽에서 왼쪽으로 작업해야합니다. Excel 라이브러리의 일부인 노드를 넘어서는 가정 (단순화 된 것)을 만들고 어떤 클래스가이를 참조하는지 확인하십시오. 이 시점에서이 코드는 코드 (b)에서 해당 참조를 찾거나 깊이 탐색 (c)하기 시작합니다. (a)이 참조 사슬 (오른쪽에서 왼쪽으로)이 추구할만한 가치가 없다고 생각하면 다음 참조 사슬로 이동하십시오.인스턴스 분류기보기를 사용하면 오른쪽 - 왼쪽, 상단 - Botton으로 작업 할 수 있습니다.

(b) 소스 코드가있는 경우 노드를 클릭하고 Visual Studio에서 클래스를 탐색 할 수 있습니다. >

(c) (a)에서 참조 체인을 탐색하면 "이 경로에있는 인스턴스 표시"링크를 사용하여 표시된 메트릭 (크기, 거리)에 대한 판단을 내릴 수 있습니다. GC 루트에서) 자세한 내용을 탐색 할 클래스의 인스턴스를 선택하십시오. 그러면 인스턴스 보유 그래프로 이동하여 인스턴스에 대한 참조 체인을 자세히 보여줍니다. 여기에있는 도구 팁, 유색 영역 및 노드의 유형에주의를 기울이면 다양한 것들을 의미합니다. 아래 링크를 참조하십시오.

나는이 답변에서 분명히 알 수있는 것은 배워야 할 것이 많기 때문에 AMP 문서를 보는 것이 도움이 될 것이라고 생각하며 응용 프로그램을 극단적으로 높은 수준으로 따라 잡았고 많은 것을 만들었습니다. (많은 것으로 가정한다).

어떤 도움을 링크를 참조하십시오 :

Class view filters

Instance Categorizor

Instance retention graph

Large object heap fragmentation tips < - 다른 포스터에 의해 지적.

Red Gate's learning portal for the Memory profiler < - 아마도 비디오와 기술 문서 섹션 I가 당신이 시작 할텐데

봐.

+0

빠른 답장을하고 모든 것을 설명해 주셔서 감사합니다. 첫 번째 이미지는 파일이 생성 된 후 ExcelCell이 61MB를 사용하고 있음을 알려주는 요약 이미지입니다. 다음 3 개의 이미지는 3 (오른쪽에서 왼쪽)으로 스필 트되어있는 오브젝트 그래프의 일부입니다. 문제는 오른쪽에서 왼쪽으로 드릴을 한 후 동일한 개체를 표시하고 있다는 것입니다. 나는 시스템이 모든 참조를 보유하고있는 최종 객체를 지적하기를 희망했다. 내가 올바른 방향으로 가고 있는지 확인하고 싶었을뿐입니다. – SharpCoder