TotalAddrSpace (THeapStatus)가 충돌하여 2GB 수준에 도달하기 때문에 My Delphi6 프로그램이 충돌합니다. 나는 ($ SetPEFlags $ 20를 사용하여) 4GB 레벨의 한계를 늘릴 수 있었지만, 이는 결국 충돌을 지연시킨다.TotalUncommitted 메모리가 계속 증가하므로 My Delphi6 프로그램이 충돌합니다.
TotalUncommitted 메모리는 어떤 이유로 증가하는 반면 TotalCommitted 메모리와 TotalAllocated 메모리는 허용 가능한 수준 (약 550MB)으로 안정됩니다.
TotalUncommitted 메모리가 계속 증가하고 결국 TotalAddrSpace가 2GB (현재 : 4GB) 수준에 도달하여 프로그램이 충돌하는 이유를 알 수 없습니다. 프로그램에서
나는 길이가 내가 증가 또는 SetLength를 명령을 통해 간단한 조정을 정기적으로 줄일 수 많은 동적 배열를 사용합니다. 이러한 방식으로 동적 배열을 정기적으로 늘리거나 줄이면 효과적으로 TotalUncommitted 메모리의 범위를 넘어서게됩니까?조언이나 통찰력이 있으면 대단히 감사하겠습니다. 어떻게 든 적극적으로 TotalUncommitted 메모리를 줄이기 위해 일반적인 메커니즘을 알고 또한 경우
...
어쩌면 당신은 [힙 조각화] (http://stackoverflow.com/a/2569754/800214)의 영향을받을 수 있습니까? – whosrdaddy
이것이 일어날 수있는 많은 이유. 우리 모두가 그들을 나열하려고 현실적이지 않습니다. 아마도이 질문은 너무 열악한 편입니다. 너무 광범위합니다. –