Es verwendet die Betriebssystemunterstützung für Speicherabbilddateien.
Ich versuche eine Dokumentation zu finden, die das bestätigt, aber ich habe noch nichts Schlüssiges gefunden. Allerdings sagen verschiedene Teile der Dokumentation solche Dinge:
Viele der Details von Speicherabbilddateien hängen von Natur aus vom zugrunde liegenden Betriebssystem ab und sind daher nicht spezifiziert. Das Verhalten dieser Methode, wenn die angeforderte Region nicht vollständig in der Datei dieses Kanals enthalten ist, ist nicht angegeben. Ob Änderungen am Inhalt oder an der Größe der zugrunde liegenden Datei von diesem oder einem anderen Programm an den Puffer weitergegeben werden, ist nicht spezifiziert. Die Rate, mit der Änderungen an dem Puffer an die Datei weitergegeben werden, ist nicht angegeben.
Wenn alles nur nachgebildet wäre, wäre ein solches nicht spezifiziertes Verhalten nicht nötig.
Wenn Sie zwischen den Zeilen Ihrer Frage und Ihres Kommentars lesen, versuchen Sie eine Memory-Mapped-Datei zu verwenden, um Speicher / Objekte zwischen einer Java- und C ++ - Anwendung freizugeben.
Mein Rat lautet: Versuche nicht, dies zu tun .
Es gibt schwierige Probleme, die behoben werden müssen, um dies zu gewährleisten:
Ein Java-spezifisches Problem besteht darin, dass Sie Ihre Java-Objekte nicht in den Speicherbereich einfügen können. Stattdessen müssen Sie sie in einer Weise serialisieren und deserialisieren, die mit den Darstellungen kompatibel ist, die die C ++ - Seite erwartet.
Schließlich, selbst wenn es Ihnen gelingt, all diese Probleme zu lösen, ist Ihre Lösung wahrscheinlich fragil, weil sie vom unspezifizierten Verhalten der Betriebssystem-, C ++ - und Java-Implementierungen abhängt, die sich möglicherweise ändern können Sie ändern Versionen von jedem der oben genannten.
Tags und Links java winapi memory-mapped-files