問題タブ [memory-mapping]

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 投票する
1 に答える
226 参照

assembly - M68HC12 で、メモリ領域 $1020 が staa で書き込めないのはなぜですか?

次の asm コードがあります。

テーブルは適切に設定されていますが、staa は 1020 で何も書き込みません。なんで?

0 投票する
8 に答える
17948 参照

java - Javaでソートされた(メモリマップト?)ファイルでのバイナリ検索

私はPerlプログラムをJavaに移植するのに苦労しており、Javaを学びながら進んでいます。元のプログラムの中心的なコンポーネントは、バイナリ検索を使用して+500 GBのソートされたテキストファイルで文字列プレフィックスルックアップを実行するPerlモジュールです(基本的に、ファイルの中央のバイトオフセットを「シーク」し、最も近い改行にバックトラックし、比較します)検索文字列の行プレフィックス、そのバイトオフセットの半分/ 2倍に「シーク」し、見つかるまで繰り返します...)

私はいくつかのデータベースソリューションを試しましたが、このサイズのデータ​​セットを使用した場合のルックアップ速度でこれに勝るものはありません。そのような機能を実装する既存のJavaライブラリを知っていますか?それができない場合、ランダムアクセスがテキストファイルを読み取る慣用的なサンプルコードを教えていただけますか?

または、新しい(?)Java I / Oライブラリに精通していませんが、500 GBのテキストファイルをメモリマップして(メモリに余裕のある64ビットマシンを使用しています)、バイナリを実行するオプションはありますか?メモリマップトバイト配列を検索しますか?この問題や同様の問題についてあなたが共有しなければならない経験を聞いて非常に興味があります。

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

windows - Windows のプロセス間で機密データを転送する方法は?

ユーザー名とパスワードの情報を、あるプロセスから Windows の同じサーバー上で実行されている別のプロセスに転送したいと考えています。この転送を安全な方法で行うための最善の方法は何ですか? 簡単な方法の 1 つは、パスワードをファイルにコピーしてから、他のプロセスにファイルから読み取らせ、読み取り後にファイルを削除することです。これは単純ですが、安全であるかどうかは心配です。ただし、このファイルが短期間しか存在しない場合でも、誰かがこのファイルにアクセスする可能性があり、他の場合にファイルが除外される可能性があるためです。エラーまたはクラッシュを処理します。ソケットや名前付きパイプのような IPC は、この問題に対してやり過ぎのようです。以下のこのリンクで説明されているように、プロセス間でのメモリの共有について説明しているように、メモリマップファイルを使用する傾向があります。これは正しいアプローチですか?また、ルージュプロセスがこのメモリロケーションからデータを清掃するのを防ぐために、解放/消去する前にメモリをダミーデータで埋めることをお勧めしますか?

http://msdn.microsoft.com/en-us/library/aa366551(VS.85).aspx

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

java - Java のメモリ マップト ファイル

私は、多くの I/O を実行する必要がある非常に高速な Java コードを作成しようとしています。ByteBuffer を返すメモリ マップ ファイルを使用しています。

私が抱えている問題は、ByteBuffer .array() メソッド (byte[] 配列を返す必要がある) が読み取り専用ファイルに対して機能しないことです。メモリ内に構築されたメモリ バッファとディスクから読み取られたバッファの両方で動作するようにコードを記述したいと考えています。しかし、すべてのバッファを ByteBuffer.wrap() 関数でラップしたくありません。これにより速度が低下するのではないかと心配しているからです。そのため、私はすべての 2 つのバージョンを作成しました。1 つは byte[] を受け取り、もう 1 つは ByteBuffer を受け取ります。

私はすべてをラップする必要がありますか?それとも、すべて二重に書くべきですか?

0 投票する
6 に答える
19243 参照

c++ - ポインタをC++の配列に変換します

CreateFileMapping関数は、メモリマップされたファイルへのポインタを返します。そのメモリマッピングを配列として扱いたいと思います。

これが私が基本的にやりたいことです:

どうやら私は単に腕を振って、ポインタが配列になったことを宣言することはできません。

どうすればこれができるかわかりますか?ポインタが指している値を配列にコピーしたくありません。大きなファイルではメモリを大量に使用するためです。

本当にありがとう、

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

macos - OS X 10.5/10.6で独自のプロセスのメモリマップを取得する

Linuxでは、プロセスのメモリマップを確認する最も簡単な方法は、次の/proc/PID/mapsようなものを確認することです。

プロセスは、OSX 10.5または10.6でのプロセス自体のメモリマップに関する同等の情報(アドレス範囲、保護、マップされたファイル名など)をどのように取得できますか?

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

linux - Linux / HPUXでコアのメモリマッピングを取得する方法(pmap)

ソラリスでは、コアファイルに対してpmapコマンドを実行して、クラッシュしたプロセスのメモリマップを取得できます。残念ながら、HPUXおよびLinuxで使用可能なpmapコマンドは、このオプションを提供していません。これらのプラットフォームでこの情報を取得する方法を教えてください。

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

caching - メモリ マップ ファイルが原因で物理メモリが不足する

私は 2GB の RAM を持っており、メモリを集中的に使用するアプリケーションを実行していて、使用可能な物理メモリが少ない状態になり、アプリケーションやメニューの呼び出しなどを開くなどのユーザー アクションにシステムが応答しません。

メモリをページファイルにスワップして物理メモリを解放するようにシステムにトリガーまたは指示するにはどうすればよいですか? Windows XP を使用しています。

同じアプリケーションを 4GB RAM のマシンで実行すると、そうではなく、システムの応答は良好です。利用可能な物理メモリがいっぱいになった後、システムは自動的にページファイルにスワップし、物理メモリを解放しますが、2GB システムほど悪くはありません。

この問題を克服するために (2GB マシンで)、アプリケーションによって割り当てられる大きなデータセットにメモリ マップ ファイルを使用しようとしました。この場合、アプリケーション (プロセス) の仮想メモリは問題ありませんが、システム キャッシュが高く、物理メモリが少ないという上記と同じ問題があります。

メモリ マップ ファイルがプロセス仮想メモリ システム キャッシュにマップされていないにもかかわらず、キャッシュが高くなっています。どうして???!!!:(

どんな助けでも大歓迎です。ありがとう。

0 投票する
5 に答える
1542 参照

c - Cのメモリマップドレジスタへの読み取りおよび書き込みアクセス幅の制御

x86ベースのコアを使用して32ビットメモリマップドレジスタを操作しています。私のハードウェアは、CPUが32ビット幅の読み取りと書き込みをこのレジスタに生成する場合にのみ正しく動作します。レジスタは32ビットアドレスにアラインされており、バイト粒度でアドレス指定できません。

C(またはC99)コンパイラがすべての場合に完全な32ビット幅の読み取りと書き込みのみを生成することを保証するにはどうすればよいですか?

たとえば、次のような読み取り-変更-書き込み操作を実行すると、次のようになります。

一番下のバイトだけが変更され、8ビット幅の読み取り/書き込みが生成されるという事実についてコンパイラーが賢くなりたくありません。x86での8ビット演算では、マシンコードの密度が高くなることが多いため、不要な最適化が心配です。一般に、最適化を無効にすることはできません。

-----編集-------
興味深く、非常に関連性の高い論文:http ://www.cs.utah.edu/~regehr/papers/emsoft08-preprint.pdf

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

c - MapViewOfFileがrapidxmlの使用できないポインタを返すのはなぜですか?

提案されているように:私は2ギガより大きいファイルを持っています。次の関数を使用してメモリにマッピングしています。

ptrを受け入れるrapidxmlに解析しますCh*。Rapidxmlのドキュメントによるptrと、変更可能である必要がありますが、タイプであると宣言されているため、char*これを行うことはできません。プログラムはコンパイルされますが、実行時に次のエラーでクラッシュします:アクセス違反。これは、を解析しているときに発生することがわかりましたchar*。どうすればこれを回避できますか?