2013-08-09 17 views
5

Staram się maksymalizować prędkość mojego programu (aby uzyskać wyniki w czasie rzeczywistym) i unikać niepotrzebnego ładowania danych z dysku twardego.Jak wykorzystać jak najwięcej pamięci RAM dla mojego programu?

Program ma przetwarzać ogromną ilość obrazów i chciałbym obsługiwać w RAM tak wiele przetworzonych danych, jak to możliwe. Ale dowiedziałem się, że malloc nie przydzieli więcej niż 2 GB, nawet gdy mam 8 GB pamięci RAM (Windows 7 64-bit).

Jak mogę, aby mój program korzystał z jak największej ilości pamięci RAM?

+0

Jeśli przejdziesz na 64-bitowy system Linux, będziesz mógł "malloc" o wiele więcej niż 2 GB (prawdopodobnie prawie 7 lub 8 GB). –

+3

Pamiętaj, że np. 'malloc' przydziela ciągły blok pamięci. Może po prostu być tak, że nie ma wystarczająco dużego bloku dla ciebie. Pamiętaj też, że nawet jeśli masz 8 GB fizycznej pamięci RAM, wszystkie aplikacje korzystają z tej pamięci i dopóki nie będziesz w trybie ciągłym czytać/zapisywać całej pamięci, jej części mogą zostać zamienione na dysk. –

+3

Czy na pewno program jest skompilowany w trybie 64-bitowym do pliku wykonywalnego 64-bitowego? –

Odpowiedz

7

wierzę okna odpowiednik mmap(2) jest VirtualAlloc

To powinno pozwolić na użycie dużo więcej pamięci. Należy pamiętać, że system operacyjny może nadal decydować o przejrzeniu pamięci. Możesz zablokować go w pamięci RAM za pomocą VirtualLock. Ilość blokowanej pamięci może być jednak ograniczona.

Również, jak wspomniano w komentarzach, upewnij się, że skompilowałeś swój program jako 64-bitowy.

+0

_ "Ilość blokowanej pamięci może być ograniczona" _ - tak, i to nie tylko _ może być_, ale jest bardzo ograniczone. Domyślnie, jeśli dobrze pamiętam, jest 16 MB, chyba że najpierw dostosujesz swój zestaw roboczy. – Damon

Powiązane problemy