問題タブ [memory-fragmentation]

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 に答える
108 参照

c - 完全に未使用のメモリをどの程度断片化できますか?

次の C コードの例 ( http://bugs.python.org/issue19246から取得) は、32 ビット モードでコンパイルされている間に、Windows 7 64 ビットで実行されます。

出力:

結果は次のように解釈される可能性があります: メモリ全体を割り当ててから解放した後、プロセスのメモリがひどく断片化されているため、長さが 1 MB のチャンクがありません。ただし、ストレス手順は、メモリエラーなしで継続的に繰り返すことができます。

質問は次のとおりです。

  1. 完全に使用されていない場合、メモリをどのように断片化できますか?
  2. そのプロセスのメモリの断片化をどのように修正できますか?
0 投票する
5 に答える
1378 参照

c++ - 「pragma pack 1」はヒープの断片化を避けるのに役立ちますか?

私のプログラムでは、居住者のサイズがいくらか増加しています。ヒープの断片化が原因だと思います。なので使用予定です#pragma pack 1。ヒープの断片化を減らしますか?

他のオーバーヘッドはありますか?

私はそれのために行きますか?

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

c# - 大きな文字列を一度構築してresponse.writeに渡すか、ピースごとにresponse.writeを呼び出す方が効率的ですか?

ASP.Net 4.0 Web サイトで毎日 OutOfMemoryExceptions が発生しています。問題の 1 つは LOH の断片化であると思われるため、より効率的にメモリを割り当てるコードの変更を検討しています。

たとえば、ブラウザーに返したい大きな文字列 (2 MB) を生成しています。データのページングは​​オプションではありません。

次のほうが効率的ですか?

  1. Response.Write(bigString)StringBuilder で文字列を作成してから、またはを 1 回呼び出します。
  2. を繰り返し呼び出して文字列を断片的に書き込むResponse.Write(smallString)

オプション 1 に従うと、LOH のスペースを占有する 1 つの大きな文字列が得られ、それが Response オブジェクトの内部バッファにコピーされます。つまり、少なくとも一時的に LOH に 2 つの大きなブロックがあるようです。

オプション 2 に従うと、ガベージ コレクションを取得する多数の小さな文字列と、応答オブジェクトのバッファーの LOH 上の 1 つの大きなブロックだけを処理することになります。

したがって、オプション2の方が優れているようです。

私はこれを正しく理解していますか?

サーバーには 4 GB の RAM があり、Windows 2003 32 ビットを実行しています。これは、サーバー上で実行されている唯一のサイトです。したがって、各プロセスには 4 GB のアドレス空間がありますが、使用できるのは 2 GB だけです。仮想バイトが約 1.8Gb に達すると OOM エラーが発生し始め、サイトをリサイクルして約 24 時間問題を解決します。プライベート バイトは 500 ~ 800 MB の間で変化します。問題は、物理メモリが不足していることではないと思います。

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

asp.net - 空の HTML ページに対するサーバー上の単一のリクエストごとに、メモリが増加します。何が原因でしょうか?

まず第一に、私はジュニア開発者であり、asp .Net は初めてです。

私たちの ASP.Net Web サイトは、すぐに運用を開始する必要があります。空のhtmlページを更新しても、メモリが 常に増加していることに気付いたことを除いて。 140MOくらいから始めて1GOまでいけます。私は最初にメモリ リークを考えましたが、デバッグ ツールはメモリの断片化を指摘しているようです。.Net メモリに関する perfmon インジケーターの結果は次のとおりです

インテル Corei5 CLR: 4.0 VS2012 x64OS