2009-12-04 4 views
2

대용량 데이터 세트에서 예상치 않게 메모리 부족 오류를 생성하는 응용 프로그램이 있습니다. 우리는 응용 프로그램의 메모리 관리를 최적화하여 문제를 해결하려고하지만 매우 큰 데이터 세트에는 시험주기를 반복하고 경험적으로 문제를 찾아내는 것이 어렵다. 잠시 애플리케이션 성능의 문제에 대한 차치.NET 응용 프로그램에서 더 작은 원본 데이터 집합을 사용하여 메모리 누수를 극대화하기 위해 메모리 부족을 시뮬레이션 할 수 있습니까?

- 그 올바른 응용 프로그램 동작 후 작업 목록에 대한 향후 계획 :

응용 프로그램을 사용할 실행 한 메모리의 양을 제한하는 쉬운 방법이 있나요 Visual Studio의 디버그 모드에서 매우 큰 데이터 집합에서만 자연스럽게 발생하는 OutOfMemory 오류를 대신 작은 데이터 집합에서 발생하도록 강제 할 수 있습니까?

답변

3

다른 프로그램을 시작하기 전에 프로그램 시작시 큰 덩어리를 직접 할당하십시오.

는 5백메가바이트 무료 (대한 32 비트 프로세스) 주위를 유지하려면 : 프로그램 시작시 큰 버퍼 권한을 할당하는 것입니다 작동합니다

byte[] OutOfMemory = new Byte[int.MaxValue - ((1024^2) * 500)]; 
+0

이 답변은 오래되어있을 수 있습니다. 자세한 정보는 [바이트의 최대 크기는 왜 2 GB - 57 B입니까?] (http://stackoverflow.com/a/6616968/427192)를 참조하십시오. –

0

한 트릭을. GCed가 아니도록 참조를 유지하면 원하는 결과를 얻을 수 있습니다.

+0

참조 유지에 관한 좋은 점! –

2

처음에는 많은 양의 메모리를 할당하고 프로그램 실행 기간 동안 유지하려고 했습니까?

이렇게하면 나머지 응용 프로그램의 사용 가능한 메모리가 줄어 듭니다.

0

나는 메모리 프로파일 러를 얻고 프로덕션 환경에서 물기 전에 인위적으로 문제를 다시 시도합니다. ANTS 메모리 프로파일 러는 꽤 좋은 :

http://www.red-gate.com/products/ants_memory_profiler/index.htm

그것은 비싼하지만 재판이 아마 그 문제에 대해 할 것입니다.