2012-07-17 3 views
0

다음 자습서에서 조언을 따랐습니다 : http://humblecoder.co.uk/tag/windbg. 나는 그가 다음과 같은 명령을 내려야한다고 지적했다 :! dumpheap. 세 번째 열에 총 바이트 수를 더하고 1024와 1024로 다시 나누었습니다. 이것은 42MB에 해당합니다. 문제의 ASP.NET 프로세스는 1.5GB 이상의 크기입니다.ASP.NET 메모리 누수 - OracleConnection/OracleCommand

작업 관리자에서 덤프 파일을 만들 수있는 옵션이 없기 때문에 Windows 2003 서버에서 수행됩니다. 따라서 다음과 같은 명령을 실행해야합니다 : .dump/ma w3wpdump.dmp. 이것은 미니 덤프이기 때문에 도움이 될만한 물건이 있습니까? 메모리 사용의 대부분이 문자열에 의해 사용되는 것 같습니다 다른 질문을 보면 ASP.NET Memory Leak - OracleCommand Object

답변

0

:

나는 문제를 설명이 어제에 대한 또 다른 질문을했다. 나는 그 끈의 일부를 버리고 그 안에 무엇이 있는지 보게 될 것입니다. dd 또는 db 또는 du을 사용하여 문자열의 내용을보고 문자열 인스턴스 중 하나의 메모리 주소를 제공 할 수 있습니다. 즉 dd 0x12345678이고 거기에있는 메모리의 원시 내용을 덤프합니다. d* 명령에 대한 자세한 정보는 windbg 도움말을 참조하십시오.

그러나 관리되는 힙이 메모리를 소비하지 않는 것으로 확인되면 관리되지 않는 힙을 살펴볼 것입니다. !heap -s은 과도한 메모리 사용량이있는 관리되지 않는 힙에 대한 요약을 제공합니다.

+0

감사합니다. 함께 연결된 많은 문자열이 있습니다. StringBuilder 객체를 사용해야한다는 것을 알고 있습니다. 내 이전 게시물은 19472876 바이트가 Strings에 할당되었음을 제안합니다. 이것은 18MB의 돌풍입니다. 이게 아주 많다고 하시겠습니까? 18MB는 나에게별로 좋아 보이지 않습니다. 문자열을 만들거나 사용할 때 관리되지 않는 리소스가 사용됩니까? – w0051977

+0

죄송합니다. 금액을 처음 보았을 때 잘못 읽었습니다. 이 경우 무 차원 힙을 검사 할 것입니다. – Zipper

+0

문자열이 많이 있다고 생각합니까? 나는 그것을 비교할 것이 아무것도 없다. – w0051977