Я работаю над Java-приложением, которое должно взаимодействовать с приложением C. Приложение C использует разделяемую память и mmap для связи, и мне нужно, чтобы приложение Java имело доступ к той же самой памяти.
Моя первая попытка заключалась в использовании вызовов JNI для извлечения данных из общей памяти, но накладные расходы на каждый вызов JNI снизили производительность, поэтому я хотел бы получить доступ к этой памяти на Java и выполнить поиск данных на Java-сторона.
Идея, которую я имею, это то, что мне нужно будет сделать следующее:
- Используйте один вызов JNI, чтобы получить местоположение разделяемой памяти, которое мне нужно прикрепить к
- Создайте новый FileChannel()
- Используйте этот FileChannel для создания MappedByteBuffer, используя map()
Это лучший способ сделать это? Кроме того, я не уверен, как создать FileChannel, чтобы указать на правильную ячейку памяти.