問題タブ [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.

0 投票する
2 に答える
3902 参照

windows - メモリマップトファイル:メモリ使用量を監視する方法

私は、大量のメモリを必要とする32ビットのエンドユーザーアプリケーションに取り組んでいます。最大数ギガバイト。私は最近、このRaymond Chenの記事に触発された、ファイルなしのメモリマップトファイルを使用するように内部メモリ割り当て戦略を切り替えました。それは素晴らしい働きをします。

唯一の欠点は次のとおりです。この方法でギガバイトのメモリを割り当てると、パフォーマンスカウンターのどこにも表示されません。もちろん、割り当てられている量と、アドレススペースにマップされている量はわかりますが、物理メモリとページファイルにどのように分割されているかはわかりません。デバッグのためにログに記録する以外の理由がない場合は、知りたいのですが。

0 投票する
1 に答える
2422 参照

performance - メモリマップトファイルは、大量のシーケンシャル読み取りで高速ですか?なんで?

以下のコードを使用して、メモリマップトファイルの大規模なシーケンシャル読み取りの読み取りと、次の呼び出しとのパフォーマンスの違いを測定しましたReadFile

TEST_READ_FILE(テストを変更するためにの値を変更しました。)

驚いたことに、20%ReadFile遅くなりました。なんで?

0 投票する
2 に答える
2997 参照

delphi - ファイル マッピングを高速にコピーするには?

スレッドと TFileStream のメソッドを使用してファイルをコピーするアプリケーションを作成しましたが、特に大きなファイルをコピーするときの速度に少しがっかりしました。それから、ファイル マッピングについて聞いたことがあります。ファイルへのアクセスがはるかに高速になるため、明らかに、はるかに高速にコピーする方法が得られる可能性があります。

私は初心者なのでしようとしていますが、ファイルマッピングを介してファイルをコピーすることができませんでした。(ファイルは test2.iso を作成しますが、代わりに 0ko 3GB ^ ^ を実行します。)

これが私のコードです。

私の問題はどこですか?

0 投票する
2 に答える
274 参照

c++ - メモリ マップド ファイルの奇妙な動作、いくつかの観察といくつかの質問

以下のこのコードを見てください。

32 バイトしか割り当てていませんが、割り当てられたサイズを超えて書き込もうとしても、エラーはまったく発生しません。これは仕様によるものですか、それとも Windows コードのバグですか? ただし、コメント部分を含めると、予想どおりエラーが発生します。

私はこの「機能」を有利に利用しようと考えているので、これを尋ねます。できますか?参考までに、私は Win XP バージョン 2002 SP 3 を持っていますが、これは新しい Windows で「修正」されていると思われ、コード IDK が失敗する可能性があります。これの内部を説明する便利なリンクは本当に役に立ちます。

ありがとう

0 投票する
3 に答える
1536 参照

linux - ファイルシステムの種類を XFS から JFS に変更すると、mmap ファイルの書き込みパフォーマンスが向上するのはなぜですか?

私はさまざまなファイルシステムをいじり、mmap を使用したときのさまざまなファイルシステムのパフォーマンスを比較してきました。

JFS に変更すると、書き込みパフォーマンスがすぐに 2 倍になったことに驚いています。ページキャッシュへの書き込みが行われたと思ったので、書き込みが完了するとアプリはすぐに動き続けますか? それは実際にはLinuxでの同期操作ですか?

読み取りパフォーマンスがわずかに向上しますが、それほど重要ではありません。

0 投票する
1 に答える
2383 参照

c# - Windows7のVC++およびC#ではMemoryMappedFilesまたは名前付きパイプを使用したプロセス間通信

VC ++ DLLとC#アプリケーションの間で通信しようとしています。たくさんのリソースと資料を読んだので、MemoryMappedファイルとPipesの両方でそれをやろうとしましたが、残念ながら仕事に取り掛かることができませんでした。

C#で記述された「レシーバー」/サーバー部分を作成する方法は次のとおりです。

これはVC++の対応物です:

私の問題は、どのアプローチを使用しても、open呼び出しは常に「ファイルが見つかりません」というエラーを返すことです。アプリケーションは両方とも、64ビットWindows 7の同じユーザーアカウントで実行されます。ここで何が欠けていますか?

0 投票する
3 に答える
1096 参照

filesystems - 仮想ファイル システム

ほとんどのゲームには、リソース (モデル、テクスチャなど) が特別なファイル (Quake 3 の .pk3 ファイルなど) にパックされています。どうやら、これらのファイルは何らかの形で「マウント」され、あたかも別のファイル システムであるかのように使用されます。

これがどのように達成されるか知りたいです。これまでに思いついた唯一の戦略は、ファイルのヘッダーにオフセット サイズの情報を配置し、ファイルをメモリ マッピングして、独立した書き込み保護されたメモリのチャンクであるかのようにリソースにアクセスすることです。

私の戦略が実行可能かどうか、またより良い代替案があるかどうかを知りたいです。

ありがとう!

0 投票する
1 に答える
1224 参照

memory - ファイル システム - メモリ マップト ファイル

私のオペレーティングシステムクラスの最後の質問の例:

ほとんどのオペレーティング システムは、「メモリ マップ ファイル」をサポートしています。これは、実行中のプロセスのアドレス空間にマップされるファイルを表します。ファイルへの読み取りと書き込みは、メモリの読み取りと書き込みに変換されます。map() と unmap() という 2 つの新しいシステム コールの存在を想像できます。

a) map(); を検討してください。ファイル名と仮想アドレスを受け入れ、オペレーティング システムが仮想アドレスから始まるアドレス空間にファイルをマップするようにします。この呼び出しをサポートするために仮想メモリ システムを使用する方法を説明してください。

b) unmap(); を検討してください。仮想アドレス空間からファイルの関連付けを解除します。このシステム コールを実装するために取得する必要がある統計を記述します。すべての仮定をリストします。

c) 多くの UNIX システムでは、inode はディスクの先頭に保持されます。別の設計では、ファイルの作成時に i ノードを割り当て、その i ノードをファイルの最初のブロックの先頭に配置します。この代替案の長所と短所について話し合います。

d) 空きディスク ブロックに関する情報を含むビットマップまたは空きリストがクラッシュにより完全に失われた場合はどうなりますか? この災害から回復する方法はありますか、それともディスクが使用できなくなりましたか。UNIX および FAT スタイルのディスク ブロック割り当てについて、あなたの答えを議論してください。

これらの質問に関する議論の情報は大歓迎です。

0 投票する
1 に答える
3750 参照

java - JavaMemoryMappingビッグファイル

MappedByteBufferの2GIGへのJavaの制限により、大きなファイルのマッピングに使用するのは困難です。通常推奨されるアプローチは、MappedByteBufferの配列を使用し、次の方法でインデックスを作成することです。

これは1バイトで機能する可能性がありますが、より大きく、境界を越える必要がある読み取り/書き込み(getLong()またはget(byte []))を処理する場合は、多くのコードを書き直す必要があります。

質問:この種のシナリオのベストプラクティスは何ですか?車輪の再発明をせずに再利用できる実用的なソリューション/コードを知っていますか?

0 投票する
4 に答える
9298 参照

c# - C# .net 4 でのバイト配列の読み取り/書き込み

オーバーフローの皆さん、こんにちは。

任意の値型を読み書きできるという点で、メモリ マップト ファイルの柔軟性が気に入っています。
バイト配列をメモリマップバッファなどにコピーすることなく、バイト配列で同じことを行う方法はありますか?

よろしく