Problem je fragmentacija memorije. Windows memory manager dodeljuje programima (i samom sistemu) trazene kolicine memorije, koju ti programi (u toku rada ili kada zavrse sa radom) vracaju sistemu, i tako u krug, sve bez nekog reda, pa vremenom dolazi do fragmentacije memorije, slicno kao kod hard diskova. To znaci da windows ima desetine, stotine, hiljade slobodnih blokova memorije, ali ako program trazi jedan veliki kontinualni niz slobodne memorije, Windows nije u stanju da to i omoguci pa dolazi do greske na koju se zalis. Takav problem imaju i poznatiji programi, npr.:
http://www.mathworks.com/support/solutions/data/1-1HE4G5.html
Moze se desiti da na tvojoj masini gde imas 2GB RAM memorije i ne bude neki problem da uzmes blokove od po 150MB, ali bih svakako izbegao pretpostavku da ces to moci i svakoj drugoj masini. Znaci ovde nije samo od uticaja ukupna fizicka kolicina memorije, vec i prethodno koriscenje memorije od strane samog windows-a i drugih programa na sistemu (u toku jedne sesije windows-a). Ako se racunar ne gasi duze vreme (server?) onda je stvar jos gora.
Ako je moguce promeni nacin na koji se memorija koristi tako sto ces koristiti manje blokove memorije, naravno ako je moguce, a da se performanse ne naruse. Bolji je i sporiji program koji sigurno radi, nego brz program "koji povremeno" ne radi, ili su zahtevi za njegovo izvrsavanje tesko ispunjivi u svakom trenutku.
Evo jos nekih linkova, pogledaj windows low-fragmentation heap, pogledaj kako radi windows memory manager:
http://msdn.microsoft.com/en-us/library/aa366779.aspx
http://support.microsoft.com/kb/894472
http://download.microsoft.com/...-9fde-d599bac8184a/MemMgt.docx