問題タブ [memory-mapped-files]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - システム エラー 0x5: CreateFileMapping()
名前付き共有メモリを使用して IPC を実装したいと考えています。
これを行うための手順の 1 つは、 CreateFileMapping()を使用してMapping Memory Objectへのハンドルを取得することです。
MSDN Web サイトが推奨するとおりに実行します: http://msdn.microsoft.com/en-us/library/aa366551(v=VS.85).aspx :
ただし、返されるハンドルは常に0x0で、返されるシステム エラー コードは0x5 (アクセスが拒否されました) です。
- 名前付きメモリ共有のみが必要です (ファイル共有ではありません)。
- Windows 7 x64ビット OS
- 管理者のユーザー権限が利用可能
- 開発アプリケーション: 64bit Plug-In アプリケーション(.dll)
どなたか同じ経験のある方、改善方法を教えてください。私はMSDNのサイトを参考にしているので、コードに問題があるとは思いません。
.net - 巨大なバイナリ ファイルからオブジェクトを逆シリアル化する最速の方法
シナリオは次のとおりです。バイナリ シリアル化されたオブジェクトの 2 ~ 3 GB の大きなファイルがあり、各オブジェクトの ID とファイル内のオフセットを含むインデックス ファイルもあります。
指定された一連の ID をメモリにデシリアライズするメソッドを作成する必要があります。パフォーマンスは最も重要なベンチマークであり、メモリ要件を適切に保つことは 2 番目です。
MemoryMappedFile を使用するのが道のりのようですが、大きなファイルを処理する方法が少しわかりません。ファイルが非常に大きいため、ファイル全体の MemoryMappedViewAccessor を作成できません。メモリにあまり影響を与えずに、異なるセグメントのいくつかの MemoryMappedViewAccessor を同時に開いておくことはできますか? その場合、それらのセグメントの大きさはどのくらいですか?
データが頻繁にアクセスされてから破棄される場合、ビューはしばらくメモリに保持される可能性があります
おそらく単純な方法は、オブジェクトをオフセットでフェッチするように注文し、小さなバッファーを使用してオフセットごとに CreateViewAccessor を呼び出すだけです。別の方法は、必要な最小量の異なる MemoryMappedViewAccessor とそのサイズを見つけようとすることです..しかし、CreateViewAccessor を作成する際のオーバーヘッドと、一度に安全にアクセスできるスペースの量がわかりません。私はいくつかのテストを行うことができますが、誰かがより良いアイデアを持っている場合... :)
大きなデータファイルをいくつかに分割する別の方法があると思いますが、この場合、それがうまくいくかどうかはわかりません...
c# - c# メモリ マップされたファイルの読み取り
いくつかのテキスト ファイル (それぞれ約 300 kb) を読み込もうとしています。今までは Filestream を使用してファイルを開いて読み取っていました。(タブ区切り)。しかし、.net 4.0 のメモリ マップ ファイルについて聞いたことがあります。それは私の読み取りを速くしますか?
単純なファイルの読み取りとパフォーマンスの比較を行うサンプル コードはありますか?
iphone - [NSData dataWithContentsOfMappedFile:]の後にエラーをチェックするにはどうすればよいですか?
私のプロジェクトには次のコードがあります。
明らかに、それmappedData
がゼロの場合、それは成功しませんでした。しかし、なぜそれが成功しなかったのかについての詳細をどのように入手できますか?ありませんdataWithContentsOfMappedFile:withError:
。
java - JavaでC++メモリマップトファイルにアクセスする方法
頻繁に更新されるビットマップのメモリマップトファイルを作成するWindowsC++アプリケーションがあります。このメモリマップファイルにアクセスして、Javaアプリケーションでライブイメージを表示したいと思います。どうやってやるの?
FileChannelをメモリにマップできることは知っていますが、別のプロセスによって作成されたメモリマップファイルにアクセスする方法がわかりません。
JavaアプリケーションですでにJNAを使用していますが、標準のWindowsメモリマップトファイル機能にアクセスするためにJNAを使用する必要がありますか?
または、別のプログラムで作成された画像からJavaでライブ画像ストリームを表示するためのメモリマップトファイル以外の解決策はありますか?
64-bit - 32 ビット プロセスと 64 ビット プロセス間でのメモリ マップト ファイルの共有
私の要件は、32 ビットと 64 ビットのプロセス間で共有メモリ ファイルを提供することです。このファイルは、誰が最初に来るかによって、どのプロセスでも作成できます。-これが可能かどうかはまだわかりませんが、可能であれば、後で落とし穴はありますか? - Google から入手した情報: メモリ マップ ファイル 32 ビット アプリケーションは、32 ビット仮想アドレス空間にマップされたメモリ マップ ファイルのみを共有できます。64 ビット アプリケーションは、32 ビットまたは 64 ビットの仮想アドレス空間でメモリ マップト ファイルを共有できます。64 ビット アプリケーションと 32 ビット アプリケーションの間で共有可能なメモリにファイルをマップするには、mmap(2) を呼び出すときに、64 ビット アプリケーションで MAP_SHARED フラグとともに MAP_ADDR32 フラグを指定する必要があります。URL: http://docs.hp.com/en/5966-9844/ch02s08.html#d0e3037
これは、この種の共有の場合、特定のフラグを使用して 64 ビット プロセスでメモリ マップ ファイルを作成する必要があることを意味しますか?
ありがとう
windows - セクション オブジェクト (CreateFileMapping) を使用した I/O は、基本的な API (Read/WriteFile) よりも高速ですか?
- CreateFileMapping と MapViewOfFile を実行し、memcpy などの関数で I/O を実行します。
- Read/WriteFile を使用するだけです。
最初のものは2番目よりも速いですか?わかりません。
なぜ速いのですか?
セクション オブジェクトを使用すると、VMM またはキャッシュ マネージャーからより多くのキャッシュの利点を得ることができますか?
c# - MemoryMappedFile と FileSystemWatcher を使用してログファイルへの新しいエントリを検出する
サード パーティ製アプリケーションによって書き込まれたログ ファイルがあり、そのアプリケーションでそのログ ファイルをリアルタイムまたはニア タイムで「読み取り」、新しいログ エントリを解析し、特定のイベントに対応させたいと考えています。
私の考えでは、FileSystemWatcher (ファイルの変更を知らせる) と MemoryMappedFile (特定のオフセットからの読み取りを続行する) の組み合わせでこれを達成できると考えていました。
ただし、MemoryMappedFiles を使用するのはこれが初めてなので、概念を正しく理解していないために発生する可能性があるいくつかの問題に遭遇します (たとえば、他のプロセスで使用されている既存のファイルを開くことができません)。
誰かが MemoryMappedFiles を使用して別のプロセスによってロックされているファイルを読み取る方法の例を持っているかどうか疑問に思っていましたか?
ありがとう、
トム
編集:
コメントから、メモリ マップ ファイルは、排他ロックを持つファイルへのアクセスに役立たないようです。ただし、Baretail (http://www.baremetalsoft.com/baretail/index.php) などの「テール」ツールは、まさにそれを行うことができます。1秒間隔で別のアプリケーションから排他ロックを持つファイルを読み取るのに問題はありません)。それで、これを行うには何らかの方法が必要ですか?
編集編集:
私自身の質問に答えるために、ロックされたファイルを開く際の秘訣は、次のアクセス フラグを使用して FileStream を作成することです。
.net - MemoryMappedFileに追加しますか?
メモリマップトファイルがどのように機能するかについて根本的に誤解しているかもしれませんが、MemoryMappedFileを使用しているときにファイルの末尾に追加するにはどうすればよいですか?CreateViewAccessorでは、ファイルの現在の容量のビューのみを作成できます
代わりに、基盤となるFileStreamを使用して最後まで書き込むこともできますが、そのような場合、MemoryMappingを使用する目的が損なわれることはありませんか?(追加もキャッシュしてディスクに書き込むと思いました)。もう1つのオプションは、追加データのメモリストリームではなく、書き込みをキャッシュしてキャッシュから読み取ることです。
増大しているメモリマップトファイルを操作するための一般的な方法が何であるか疑問に思っているので、私はまだ車輪の再発明をしていません
java - Javaメモリマップファイル?
Java のメモリ マップ ファイルは、Windows のメモリ マップ ファイルと同じですか? それとも、Java でのメモリとファイルの共通操作に基づいたエミュレーションのみですか?