Tôi đang làm việc trên một ứng dụng Java cần giao tiếp với ứng dụng C. Ứng dụng C sử dụng bộ nhớ chia sẻ và mmap để giao tiếp và tôi cần ứng dụng Java có quyền truy cập vào cùng một bộ nhớ. Lần đầu tiên tôi liên quan đến việc sử dụng các cuộc gọi JNI để lấy dữ liệu từ bộ nhớ chia sẻ, nhưng chi phí của mỗi cuộc gọi JNI bị giết, vì vậy tôi muốn có cách truy cập vào bộ nhớ đó trong Java và thực hiện truy xuất dữ liệu phía Java.Cách tốt nhất để truy cập bộ nhớ trong Java, tương tự như mmap là gì?
Ý tưởng tôi có là tôi sẽ cần phải làm như sau:
- Sử dụng một JNI cuộc gọi để có được vị trí của vị trí bộ nhớ chia sẻ tôi cần để đính kèm vào
- Tạo một FileChannel mới ()
- sử dụng rằng FileChannel để tạo ra một MappedByteBuffer sử dụng bản đồ()
đây có phải là cách tốt nhất để làm điều này? Ngoài ra, tôi không chắc chắn làm thế nào để thực sự tạo ra các FileChannel để trỏ vào vị trí bộ nhớ chính xác.
Bạn không thể, nhưng tôi thích được sửa chữa – dfa