Sto lavorando a un'applicazione Java che deve comunicare con un'applicazione C. L'applicazione C utilizza la memoria condivisa e mmap per comunicare e ho bisogno dell'applicazione Java per accedere alla stessa memoria.Qual è il modo migliore per accedere alla memoria in Java, in modo simile a mmap?
Il mio primo tentativo riguardava l'uso delle chiamate JNI per recuperare i dati dalla memoria condivisa, ma il sovraccarico di ogni chiamata JNI ha causato un calo delle prestazioni, quindi mi piacerebbe un modo per accedere a tale memoria in Java e eseguire il recupero dei dati su il lato Java.
L'idea che ho è che avrei bisogno effettuare le seguenti operazioni:
- Utilizzare uno JNI chiamata per ottenere la posizione della locazione di memoria condivisa devo allegare al
- Creare un nuovo FileChannel ()
- Usa che FileChannel per creare una mappa utilizzando MappedByteBuffer()
E 'questo il modo migliore per farlo? Inoltre, non sono sicuro di come effettivamente creare il FileChannel per puntare alla posizione di memoria corretta.
imho non è possibile, ma mi piace essere corretto – dfa