내 관리 프로세스의 GC 힙을 덤프하면 다른 유형과 마찬가지로 큰 문자열 객체가 많이 있음을 알 수 있습니다.문자열을 작성한 코드 줄, 메서드 이름, 클래스 이름 및 어셈블리까지 어떻게 추적합니까?
나는 그들 중 몇 가지에 신경을 집중 :. 문자열의 내용은 내가 매우 관심이 다른 것들 사이에, 무슨 얘기
> dumpheap -type System.String
> !do <address>
을 그래서, 문자열을 GC 루트까지 따라 갔다. 하지만 먼저 LOH에 있었는지 확인하고 싶었습니다.
> !gcwhere <address>
> !gcroot <address>
이제까지 얻을 수있는 내용입니다.
작성한 메소드의 메소드 설명, 해당 메소드의 선언 유형, 어셈블리 및 응용 프로그램과 함께 어디에서 (어떤 행의 코드를 작성했는지, preferrably! 해당 라인의 dumpil) 알고 싶습니다. 도메인이 어셈블리가로드되었습니다.
Thsnk 당신. 나는 dotMemory 라이센스를 가지고있다. 나는 그것을 사용할 것이다. –
dotMemory는 처음부터 객체 할당을 수집 할 수 있으므로 프로파일 러에서 응용 프로그램을 시작할 때 "할당 즉시 수집"확인란을 선택해야합니다. https://www.jetbrains.com/help/dotmemory/2017.1/Configuring_Profiling_Process.html –
예, 본 적이 있습니다. 라이센스 키를 기다리는 동안 현재 평가판을 사용 중입니다. 평가판에는 ** 즉시 할당 확인 ** 체크 박스가 비활성화되어 있으며 해당 답변에 ** 할당 할당 ** 버튼 Thomas 언급이 없습니다. –