was ist die empfohlene Anzahl von Bytes jedes Mal für Dateien zu groß Speicher auf einmal abgebildet werden?

StackOverflow https://stackoverflow.com/questions/1031073

  •  06-07-2019
  •  | 
  •  

Frage

Ich bin das Öffnen von Dateien mit Speicherkarte. Die Dateien sind offenbar zu groß (6 GB auf einem 32-Bit-PC) in einem vor abgebildet werden. Also ich denke an Mapping Teil davon jede Zeit und die Versätze in dem nächsten Mapping anzupassen.

Gibt es eine optimale Anzahl von Bytes für jede Abbildung oder ist es eine Möglichkeit, eine solche Figur zu bestimmen?

Danke.

War es hilfreich?

Lösung

Es gibt keine optimale Größe. Mit einem 32-Bit-Prozess gibt es nur 4 GB Adressraum insgesamt, und in der Regel nur 2 GB ist für Prozesse im Benutzermodus verfügbar. Diese GB 2 wird dann von Code und Daten von der exe und DLL, Heapzuweisungen, Fadenstapel fragmentiert, und so weiter. Angesichts dieser Tatsache wird man wahrscheinlich nicht mehr als 1 GB contigous Raum finden Sie eine Datei in den Speicher abzubilden.

Die optimale Anzahl ist abhängig von Ihrer Anwendung, aber ich würde Mapping mehr als 512 MB in einen 32-Bit-Prozess betroffen sein. Selbst mit sich selbst zu 512 MB zu begrenzen, könnten Sie in einige Probleme laufen je nach Anwendung. Alternativ, wenn Sie 64-Bit gehen sollte mehrere Gigabyte an einer Datei in den Speicher keine Probleme mapping - Adresse, die Sie Raum so groß ist, sollte dies keine Probleme verursachen

.

Sie können eine API wie Virtual verwenden, um den größten contigous Raum zu finden - aber dann zwingen Sie Ihre tatsächlich aus Speicherfehler auftritt, wie Sie große Mengen von Adressraum zu entfernen

.

EDIT: Ich habe gerade meine Antwort Windows-spezifisch ist, aber Sie haben nicht die Plattform, die Sie diskutieren. Ich nehme an andere Plattformen haben ähnliche limitierenden Faktoren für Memory-Mapped-Dateien.

Andere Tipps

Braucht die Dateispeicher zugeordnet sein?

Ich habe auf einem 733MHz PIII 8gb Video-Dateien bearbeitet wird (nicht angenehm, aber machbar).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top