Ich arbeite an einer Java-Anwendung, die mit einer C-Anwendung kommunizieren muss. Die C-Anwendung verwendet gemeinsamen Speicher und mmap, um zu kommunizieren, und ich brauche die Java-Anwendung, um auf denselben Speicher zugreifen zu können.Wie ist der beste Weg, um in Java auf den Speicher zuzugreifen, ähnlich wie bei mmap?
Mein erster Versuch bestand darin, JNI-Aufrufe zum Abrufen von Daten aus dem gemeinsamen Speicher zu verwenden, aber der Overhead jedes JNI-Aufrufs führte zu Leistungseinbußen. Daher möchte ich einen Zugriff auf diesen Speicher in Java erhalten und die Datenabfrage durchführen die Java-Seite.
Die Idee, die ich habe ist, dass ich folgendes tun bräuchten:
- Verwenden Sie eine JNI Aufruf die Position des gemeinsam genutzten Speicherplatz ich
- ein neues Filechannel erstellen anhängen müssen zu erhalten ( )
- verwenden, die einen Filechannel MappedByteBuffer mit Karte()
Ist dies der beste Weg zu schaffen, dies zu tun? Außerdem bin ich mir nicht sicher, wie ich den FileChannel tatsächlich erstellen soll, um auf den richtigen Speicherort zu zeigen.
imho können Sie nicht, aber ich liebe es, korrigiert zu werden – dfa