2013-08-09 5 views
5

Ich bin bestrebt, die Geschwindigkeit meines Programms zu maximieren (um Ergebnisse in Echtzeit zu erhalten) und unnötiges Laden von Daten von der Festplatte zu vermeiden.Wie verwende ich so viel RAM wie möglich für mein Programm?

Das Programm soll eine riesige Menge von Bildern verarbeiten und ich würde im RAM so viel verarbeitete Daten wie möglich behandeln. Aber ich fand heraus, dass malloc nicht mehr als 2 GB zuweisen, auch wenn ich 8 GB RAM (Windows 7 64-Bit) habe.

Wie kann ich erreichen, dass mein Programm so viel RAM wie möglich verwendet?

+0

Wenn Sie zu einem 64-Bit-Linux wechseln, können Sie 'malloc' viel mehr als 2GB (wahrscheinlich fast 7 oder 8GB). –

+3

Denken Sie daran, dass z.B. 'malloc' weist einen fortlaufenden Speicherblock zu. Es könnte einfach sein, dass es keinen Block gibt, der groß genug für Sie ist. Denken Sie auch daran, dass alle Anwendungen diesen Speicher gemeinsam nutzen, auch wenn Sie über 8 GB physischen RAM verfügen. Wenn Sie nicht ständig den gesamten Speicher lesen/schreiben, können Teile davon auf die Festplatte ausgelagert werden. –

+3

Sind Sie sicher, dass Ihr Programm im 64-Bit-Modus in eine ausführbare 64-Bit-Datei kompiliert wurde? –

Antwort

7

glaube ich, die Fenster Äquivalent mmap(2)VirtualAlloc

Dieses Sie viel mehr Speicher verwenden ermöglichen soll. Bitte beachten Sie, dass das Betriebssystem immer noch entscheiden kann, Ihren Speicher auszulagern. Sie können es im RAM mit VirtualLock sperren. Die Menge des sperrbaren Speichers kann jedoch begrenzt sein.

Auch wie in den Kommentaren erwähnt, stellen Sie sicher, Ihr Programm als 64-Bit zu kompilieren.

+0

_ "Die Menge an sperrbarem Speicher kann begrenzt sein" _ - ja, und es kann nicht nur _bey_ sein, aber es ist sehr ernst_ begrenzt. Wenn ich mich richtig erinnere, ist der Standardwert 16 MiB, es sei denn, Sie passen zuerst die Größe Ihres Arbeitssatzes an. – Damon

Verwandte Themen