2011-04-14 2 views
4

FastMM4에 표시된 것처럼 메모리 누수의 원인이 될 수있는 코드를 제거하기 위해 FastMM4와 시간을 보낸 후 우리는 Windows 7에서 약 한 달 동안 소프트웨어를 테스트하여 테스트했습니다. 멀리 내 소프트웨어 프로세스에 대한 작업 관리자에서.Delphi 7.0 및 메모리 누수가 있습니까?

> -CPU started out at 1% and 0%. Now it is bouncing around from 2% to 5% 
> -VM usage started out at 11,852KB. Now it is at 4,900kb but bouncing 
> around from 4,900kb to 5,000kb. 

소프트웨어에서 메모리 누수가 발생 했습니까? 나는 혼란스럽고 염려 스럽다. 사전에

감사합니다,

+5

그건 나에 대해 걱정할 것 같지 않습니다. –

답변

4

정상적인 메모리 사용과 비슷합니다. 이 프로그램은 메모리가 필요한 작업을 수행하고 메모리 사용량이 증가합니다. 프로그램은 수행중인 작업을 완료하고 메모리를 해제하며 메모리 사용량은 다시 감소합니다. 메모리 누수는 메모리 사용량이 올라가고 이 완료되면이 계속 올라가는 것입니다. 왜냐하면 일단 완료되면 메모리를 해제하지 않기 때문입니다.

FastMM4를 가지고 있다면 메모리 누수의 원인이 될 수있는 것들을 찾아야 할 필요가 없습니다. 전체 디버그 모드와 로깅 옵션을 켜기 만하면 실행시 누출되는 메모리를 찾고 유형 및 스택 추적 파일을 작성합니다.

+1

그리고 FastMM4는 모든 "할당 호출 스택"을 추적하기 위해 메모리 자체가 필요하므로 릴리즈 버전에서는 전체 디버그 모드를 사용하지 않아야합니다. –

4

아니, 메모리 사용은 응용 프로그램이 메모리 누수 및 이유를 걱정하는이 가능한 모든 메모리를 사용하여 최대 결국 갈 때.

3

응용 프로그램이 며칠 동안 잘 실행되는 것처럼 보이더라도 사용되지 않는 (또는 자주 사용되지 않는) 코드 영역에는 여전히 메모리 누수가 숨어있을 수 있습니다. 따라서 응용 프로그램의 일부가 나중에 활성화 될 때 문제가 될 수 있습니다.

모든 코드의 누출 여부를 테스트하려면 단위 테스트 (DUnit)로 FastMM4를 사용하여 최대한 많은 코드 경로를 실행할 수 있습니다. 단위 테스트 코드 커버리지는 예를 들어 open source Delphi tool 또는 최근에 open source이 된 Discover으로 측정 할 수 있습니다.

또한 트렁크 버전 (9.4.0)의 DUnit은 모든 테스트 사례에 대해 자동 메모리 누수 탐지 (FastMM4 기반)를 지원합니다.

1

디버거에 대해 생각해 볼 가치가 있습니까? 나는 당신이 그들을 사용하지 않는다는 것을 이해했습니다. 나는 또한 메모리 누출에 문제가 있었다. 나는 그것에 대해 전혀 짐작하지 않았다. 이제는 누출에 대한 "후견인"을 사용하십시오. 그리고 당신은 그런 것을 볼 수 있습니다, 그것은 당신을 기쁘게 할 것입니다.

관련 문제