2011-01-10 4 views
2

원본 프로그램을 너무 많이 사용하기 때문에 AQTime을 사용하기가 어렵습니다. 예를 들어 300MB의 RAM을 사용하는 프로그램이 있으면 AQTime의 할당 프로파일 러를 문제없이 사용할 수 있으며 대부분의 메모리가 사용되는 곳을 찾을 수 있습니다. 그러나 AQTime에서 실행 중임을 알게되면 원본 프로그램은 프로파일 링되는 동안 1GB와 비슷한 것을 사용합니다.많은 양의 메모리를 사용하는 프로그램에서 AQTime의 메모리 할당 프로파일 러를 사용하는 방법은 무엇입니까?

지금 당장 1.4GB의 메모리를 사용하는 프로그램에서 메모리 사용량을 줄이려고합니다. AQTime에서 실행하면 원본 프로그램에서 2GB의 주소 공간을 모두 사용하고 충돌이 발생합니다. 물론 적은 수의 테스트 데이터를 생성하고 전체 데이터 세트에서 메모리 사용이 어떻게 확장되는지 추정 할 수 있습니다.하지만 먼저 프로파일 러를 사용하는 이유는 이러한 종류의 추측을 피하려고하는 것입니다.

이미 AQTime을 '스택 정보 수집 - 없음'으로 설정하고 메모리 무결성 확인과 관련된 모든 확인란의 스위치를 끄고 프로파일 링중인 영역을 몇 개의 클래스로 제한하려고 시도했지만이 작업은 수행하지 않습니다. 아무것도 개선하지 않는 것 같습니다. AQTime을 사용하여 오버 헤드를 줄이는 방법이 있습니까? 아니면, 사용하지 않는 메모리에 대한 좋은 아이디어를 얻으려면 다른 접근법이 있습니까?

응용 프로그램은 델파이 2010 년에 기록되고 난 AQTime 6. 사용하고

NB : 증가 된 메모리 사용량의 위에, AQTime에서 실행하는 것은 엄청 많이 응용 프로그램 다운, 속도가 느려 단지 전체 운동을하지 만들기 불가능하지만 비실용적입니다 :-P

답변

0

AFAIK 할당 프로파일 러는 프로파일 링 영역에 관계없이 메모리 블록 할당을 추적합니다. 프로파일 링 영역은 클래스 인스턴스화를 추적하는 데 사용됩니다. 물론 많은 양의 메모리를 할당하는 응용 프로그램의 메모리 프로파일 링에 문제가있는 경우 LARGE_ADRESS_AWARE 플래그와/3GB 부트 스위치를 사용하거나 64 비트 시스템을 사용하려고 할 수 있습니다 (최소 4GB 이상의 메모리 또는 그 이상). 또한 응용 프로그램 상태가 충돌하기 전에 메모리가 할당 된 위치를 확인하기 위해 스냅 샷을 만들 수 있습니다. 프로파일 링은 시간이 걸립니다. 어쨌든 잠시 동안 실행해야 할 수도 있습니다.