6 我在C/C++中有一個應用程序,它將數據寫入Unix中的共享內存。現在我想通過使用Java的程序來讀取共享內存數據。使用由C++編寫的Java讀取共享內存數據 程序應讀取共享內存數據。有可能嗎? 如果可能的話,需要一個小的實現。 來源 2013-01-08 Nikhil +1 閱讀共享內存,如果只能通過JNI工作 - 在Java中你不能這樣做。我對JNI的經驗是,一些JNI插件會使其他堅如磐石的Java虛擬機崩潰。所以也許另一個解決方案是可能 – luukes +0 這個答案http://stackoverflow.com/a/1492536/1741542談論內存映射文件和NIO FileChannel。也許這對你也有效。 – +0 如果您將受益於數據的持久性(即使出於調試目的),您可以考慮內存映射文件。這裏使用純Java的實現https://github.com/peter-lawrey/Java-Chronicle –
5 看看this CodeProject上項目(適用於Windows): 使用內存映射文件和JNI Java和C++ 程序 或者,this庫之間進行通信: CLIPC是一個開源的Java庫,它爲開發人員提供了進程間通信(IPC)功能可能不存在或難以在Java發行版中使用。 來源 2013-01-08 08:41:03 deepmax +0 我可以在C++中創建一個方法來讀取共享內存,然後使用JNI調用此方法嗎?這是否會有效並且不會損害性能呢? – Nikhil +0 JNI方法應該從Java調用而不是C++。是的,您可以使用C++創建一個方法來從共享內存讀取/寫入數據。而且你也可以用JNI方法在Java中做同樣的事情。如果你做得對,不要擔心表現。 – deepmax +0 你可以請告訴我的建議如何實現以下功能? – Nikhil
閱讀共享內存,如果只能通過JNI工作 - 在Java中你不能這樣做。我對JNI的經驗是,一些JNI插件會使其他堅如磐石的Java虛擬機崩潰。所以也許另一個解決方案是可能 – luukes
這個答案http://stackoverflow.com/a/1492536/1741542談論內存映射文件和NIO FileChannel。也許這對你也有效。 –
如果您將受益於數據的持久性(即使出於調試目的),您可以考慮內存映射文件。這裏使用純Java的實現https://github.com/peter-lawrey/Java-Chronicle –