32 비트 델파이에서 프로그램을 만들고 있습니다. 내 컴퓨터는 8GB의 메모리로 64 비트 Windows 7을 실행합니다.
Windows 7에서 32 비트 프로그램에 3.8–4GB 이상의 메모리가 필요한 경우 "메모리 부족"이라고 표시됩니다.
내 프로그램의 결함입니까 아니면 Windows입니까?
32 비트 델파이에서 프로그램을 만들고 있습니다. 내 컴퓨터는 8GB의 메모리로 64 비트 Windows 7을 실행합니다.
Windows 7에서 32 비트 프로그램에 3.8–4GB 이상의 메모리가 필요한 경우 "메모리 부족"이라고 표시됩니다.
내 프로그램의 결함입니까 아니면 Windows입니까?
답변:
응용 프로그램은 여전히 32 비트 응용 프로그램이므로 최대 2 ^ 32 = 4GB의 메모리 만 처리 할 수 있습니다. 구성을 수행하지 않은 경우 응용 프로그램에 사용 가능한 가장 많은 양의 메모리는 2GB입니다. 너무 많은 메모리를 사용할 필요가 없도록 응용 프로그램을 다시 작성하는 것을 고려 했습니까?
32 비트 프로그램은 32 비트 주소를 사용하므로 4GB 이상의 메모리를 처리 할 수 없습니다 ( AWE 를 사용하지 않으면 액세스 할 수있는 메모리 범위를 늘릴 수 있지만 한 번 에 4GB 로 제한됨 )
그러나 기본적 으로 32 비트 응용 프로그램 에서는 2GB의 RAM 만 사용할 수 있습니다 . 더 높은 2GB는 커널 용으로 예약되어 있기 때문입니다. 프로그램을 옵션과 연결하고 플래그로 부팅 하여 제한을 3GB (64 비트 Windows의 경우 4GB)로 늘릴 수 있습니다 . 프로그램이 실제로 거의 4GB의 RAM을 소비하는 경우 플래그가 이미 활성화되어 있으며 그 한계를 초과 할 수 없습니다/LARGEADDRESSAWARE
/3GB
사용중인 알고리즘이 효율적이지 않을 수도 있습니다. 문제에 따라 희소 배열 , 동적 프로그래밍 또는 작은 부분으로 나누고 한 번에 한 부분 만 수행하는 것과 같은 다른 솔루션이있을 수 있습니다 ... 코드없이 대답하는 것은 불가능합니다. 가능하면 스택 오버플로 또는 코드 검토를 요청해야합니다.
어느 쪽이든, 결함은 프로젝트 소스 코드 또는 프로젝트 설정에 있으며 64 비트로가는 것이 더 나은 솔루션입니다. 프로그램을 64 비트로 간단하게 재 컴파일