Frage

Memory-Mapped-Dateien in Java wie Memory-Mapped-Dateien für Windows? Oder ist es nur auf Speicher und Datei gemeinsamen Operationen basierte Emulation in Java?

War es hilfreich?

Lösung

Es verwendet die OS-Unterstützung für Memory-Mapped-Dateien.

Ich versuche, Dokumentation zu finden, dass zu sichern, aber ich habe noch nichts schlüssig noch nicht gefunden. verschiedene Bits der docs jedoch Sie sagen Dinge wie diese:

  

Viele der Details von Memory-Mapped-Dateien sind von Natur aus abhängig von dem zugrunde liegenden Betriebssystem und sind daher nicht näher bezeichnet. Das Verhalten dieser Methode, wenn die angeforderte Region nicht vollständig innerhalb dieses Kanals der Datei enthalten ist, nicht näher bezeichnet. Ob auf den Inhalt vorgenommenen Änderungen oder die Größe der zugrunde liegenden Datei, die von diesem Programm oder einem anderen, an den Puffer propagiert werden, ist nicht spezifiziert. Die Geschwindigkeit, mit der in den Puffer verändert werden in die Datei propagiert ist nicht spezifiziert.

Wenn alles waren nur emuliert, würde es für ein solches Verhalten nicht spezifiziert keine Notwendigkeit, sein.

Andere Tipps

Beim Lesen zwischen den Zeilen Ihrer Frage und kommentieren, was Sie versuchen zu tun, eine Memory-Mapped-Datei auf dem gemeinsamen Speicher zu verwenden / Objekte zwischen einer Java und C ++ Anwendung.

Mein Rat ist, nicht versuchen, diesen zu tun.

Es gibt schwierige Fragen, die diese zuverlässig machen angesprochen werden müßten an:

  • Synchronisation der beiden Anwendungen Verwendung der gemeinsam genutzten Datenstruktur,
  • sicherzustellen, dass von einer Anwendung vorgenommene Änderungen zuverlässig in den Hauptspeicher geschrieben werden und durch den anderen lesen,
  • sicherzustellen, dass Änderungen auf Disc in der erwarteten Reihenfolge gespült bekommen.

Ein Java-spezifisches Problem ist, dass Sie nicht Ihr Java-Objekte im Speicher abgebildeten Bereich setzen können. Stattdessen haben Sie serialisiert und deserialisiert sie in irgendeiner Weise, die mit den Vorstellungen kompatibel ist, dass die C ++ Seite erwartet.

Schließlich, auch wenn Sie Erfolg haben alle diese Probleme bei der Bewältigung, ist Ihre Lösung wahrscheinlich zerbrechlich sein, weil sie auf nicht näher bezeichnete Verhalten des OS abhängig, C ++ und Java-Implementierungen , die möglicherweise ändern , wenn ändern Sie Versionen von jedem der oben genannten.

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