JavaのメモリマップファイルはWindowsのメモリマップファイルのようですか?それとも、Javaのメモリとファイルの一般的な操作に基づいたエミュレーションだけですか?Javaメモリマップファイル?
答えて
メモリマップファイルのOSサポートを使用します。
私はそれを裏付ける文書を探していますが、まだ決定的なものは見つかりませんでした。しかし、ドキュメントの様々なビットがは、このようなことは言う:
メモリマップファイルの詳細の多くは、本質的に基礎となるオペレーティングシステムに依存しているため、未指定です。要求されたリージョンがこのチャンネルのファイル内に完全に含まれていない場合のこのメソッドの動作は指定されていません。このプログラムまたは他のファイルによって、内容に加えられた変更または基礎ファイルのサイズがバッファに伝播されるかどうかは不特定である。バッファへの変更がファイルに伝播される速度は指定されていません。
すべてがエミュレートされただけの場合、このような不特定の動作は必要ありません。
あなたの質問とコメントの行を読んで、あなたがやろうとしていることは、JavaとC++アプリケーションの間でメモリ/オブジェクトを共有するメモリマップファイルを使用することです。
私の助言はです。これを行わないでください。
作るために対処する必要があるであろう困難な問題があります。この信頼性:
- 1つのアプリケーションによって行われた変更が確実に書き込まれますことを保証し、
- を共有データ構造の2つのアプリケーションの使用を同期
- 期待される順序で変更がディスクに書き込まれるようにします。
Java固有の問題は、Javaオブジェクトをメモリーマップ領域に配置できないことです。その代わりに、C++側が期待している表現と互換性のある何らかの方法で、それらを直列化および逆シリアル化する必要があります。あなたはのバージョンを変更した場合、潜在的を変更することがあり
あなたはこれらの問題のすべてに対処することに成功しない場合でも、最後に、あなたのソリューションは、それがOSの不特定の動作に依存しているため、脆弱である可能性が高い、C++やJavaの実装上記のいずれか。
答えてくれてありがとう!有用な助言;) – Edward83
- 1. Windowsメモリマップファイル
- 2. メモリマップファイルC++
- 3. Cassandra SSTableとメモリマップファイル
- 4. Chromeネイティブクライアントとメモリマップファイル
- 5. MATLABのメモリマップファイル?
- 6. ページングスペース、JVM、メモリマップファイル(ニオ)
- 7. C++メモリマップファイルの実装
- 8. WPFグリッドへのメモリマップファイル
- 9. メモリマップファイルv/s通常ファイルIO
- 10. Linuxのメモリマップファイル(削除済み)
- 11. Javaのメモリマップファイルからオブジェクトタイプを取得する方法はありますか?
- 12. Linux上のメモリマップファイル用の巨大なページ
- 13. メモリマップファイルを使用したシリアル化
- 14. Protobufとメモリマップファイルを使用したIPC C#
- 15. Apacheモジュールのメモリマップファイルの過度の同期
- 16. アンマネージバイト配列をメモリマップファイルに書き込む
- 17. OpenCLでメモリマップファイルを使用する
- 18. ecryptfsディレクトリにメモリマップファイルがありません
- 19. iOS上のC/Objective-Cにメモリマップファイル*を作成できますか?
- 20. メモリマップファイルのデータを並列処理する方法
- 21. メモリマップファイルのパスを取得できますか? (.NET 4.0)
- 22. メモリマップファイル - ファイルではなく構造をマップしますか?
- 23. WinAPIスレッドがメモリマップファイルに書き込めません
- 24. いつメモリマップファイルを使用するのですか?
- 25. 2つのメモリマップファイルをマージできますか?
- 26. メモリマップファイルをスワップファイルとして使用していますか?
- 27. メモリマップファイルが存在するかどうかを確認する方法は?
- 28. メモリマップファイルを使用してポインタを渡すことはできますか?
- 29. Windowsのメモリマップファイルの内容は、デフォルトで常にゼロになっていますか?
- 30. C:メモリマップファイルにデータを書き込むと迷惑メールが表示される
ありがとうございました。私があなたを理解しているように、java.nioクラス(メモリマップされたファイルを操作するため)は、Windows APIのメモリマップファイル関数をラップしますか?私は正しい?))) – Edward83
私はいくつかのテストを試みた。私は1つのMMFを作成し、それを2つのプロセス、すなわちWin32 C++とJava with nioで共有したいと考えました。しかし、テストでは失敗しました。なぜなら私はJavaで "Named" MMFを作成/開くことができないからです。笑))) – Edward83