問題タブ [memory]
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++ - メモリの断片化を解決する方法
メモリ割り当ての失敗により、(Windows Server 2003 で実行されている) 長時間実行されるサーバー プロセスが例外をスローするという問題が発生することがあります。私たちは、メモリの断片化が原因でこれらの割り当てが失敗しているのではないかと考えています。
したがって、私たちは私たちに役立ついくつかの代替メモリ割り当てメカニズムを検討しており、誰かが私に最善のものを教えてくれることを願っています:
1) Windowsの低断片化ヒープを使用する
2) jemalloc - Firefox 3で使用されている
3) Doug Lea のmalloc
私たちのサーバー プロセスはクロスプラットフォームの C++ コードを使用して開発されているため、どのソリューションもクロスプラットフォームであることが理想的です (*nix オペレーティング システムはこの種のメモリの断片化に悩まされますか?)。
また、LFH が Windows Server 2008 / Vista の既定のメモリ割り当てメカニズムになっているという考えは正しいですか?... お客様がサーバー OS をアップグレードするだけで、現在の問題は「解消」されますか?
c++ - プロセス内からCPUとメモリの消費量を判断する方法
私はかつて、実行中のアプリケーション内から次のパフォーマンスパラメータを決定するタスクを持っていました。
- 使用可能な仮想メモリの合計
- 現在使用されている仮想メモリ
- プロセスで現在使用されている仮想メモリ
- 使用可能なRAMの合計
- 現在使用されているRAM
- 私のプロセスで現在使用されているRAM
- %現在使用されているCPU
- %現在私のプロセスで使用されているCPU
コードはWindowsとLinuxで実行する必要がありました。これは標準的な作業のようですが、このトピックに関する情報が不完全/不正確/古くなっているため、マニュアル(WIN32 API、GNUドキュメント)やインターネットで必要な情報を見つけるのに数日かかりました。そこに見つかりました。
他の人が同じトラブルに巻き込まれるのを防ぐために、散らばった情報に加えて、試行錯誤で見つけた情報を一か所に集めておくといいと思いました。
java - 新しい要素を追加するときにクローンを使用する必要がありますか?クローンはいつ使用する必要がありますか?
グラフのデータ構造を処理するためのクラスをJavaで実装したいと思います。NodeクラスとEdgeクラスがあります。Graphクラスは、ノードのリストとエッジのリストの2つのリストを維持します。各ノードには一意の名前が必要です。このような状況を防ぐにはどうすればよいですか。
ノードとエッジをグラフに追加するときにクローンを作成し、グラフの構造的整合性を維持するNodeEnvelopeクラスを返す必要があると思います。これはこれを行う正しい方法ですか、それとも設計は最初から壊れていますか?
c++ - VC++の初期化されていないメモリブロック
誰もが知っているように、Visual C ++ランタイムは、初期化されていない、または解放されたばかりのメモリブロックを特別な非ゼロマーカーでマークします。初期化されていないすべてのメモリを手動でゼロに設定せずに、この動作を完全に無効にする方法はありますか?それは私の有効なnullではないチェックで大混乱を引き起こしています0xFEEEFEEE != 0
。
うーん、多分私はもう少しよく説明する必要があります。私は(newを介して)変数を作成して初期化しますが、それはすべてうまくいきます。(削除を介して)解放すると、ポインターが。0xFEEEFEEE
の代わりにに設定されますNULL
。の適切なチェックを挿入するとNULL
、独自のメモリを管理するすべての優れたプログラムがそうであるように、問題なくチェックに0xFEEEFEEE
合格すると問題が発生します。NULL
削除するときにすべてのポインタを手動で設定する以外NULL
に、メモリがすでに解放されたことを検出するための良い方法はありますか?Boostを使用するのはそれだけなので、Boostを使用したくないのは、オーバーヘッドが必要ないという理由だけです。
c++ - C++ でメモリ リークを回避するための一般的なガイドライン
C++ プログラムでメモリ リークを起こさないようにするための一般的なヒントは何ですか? 動的に割り当てられたメモリを誰が解放する必要があるかを知るにはどうすればよいですか?
memory - より悪い罪: 副作用または巨大なオブジェクトの通過?
関数内のループ内に関数があります。内部関数は、データの大きなベクトルを取得してメモリに保存します(グローバル変数として...「S-Plus」のような「R」を使用しています)。ループは、取得するデータの長いリストをループします。外側の関数がプロセスを開始し、取得するデータセットのリストを渡します。
次のデータセットに移動する前に各データセットを格納するように内部関数をプログラムしたため、外部関数のすべての作業はグローバル変数の副作用として発生します...大きな問題はありません。これは、メモリを大量に消費するベクトルのベクトルを収集して返すよりも良いですか、悪いですか? 優れた第 3 のアプローチはありますか?
データ ベクトルをメモリではなくデータベースに格納すると、答えは変わりますか? 理想的には、終了前に処理されたすべての情報を失うことなく、関数を終了できるようにする (またはネットワーク タイムアウトのために失敗する) ようにしたいと考えています。
java - どのヒープサイズが好みですか?
「正しい」ヒープ サイズがないことはわかっていますが、アプリケーション (アプリケーション タイプ、jdk、os) で使用するヒープ サイズはどれですか?
JVM オプション-Xms
(初期/最小) および-Xmx
(最大) により、ヒープ サイズを制御できます。どのような状況でどのような設定が意味を成すか? デフォルトが適切なのはいつですか?
windows - Windows のメモリを完全に説明している単一のリソースはありますか?
真剣に、私は MSDN をトロールしましたが、答えは半分しか得られませんでした。タスク マネージャーの列は何を意味するのでしょうか? スレッド、モジュール、ヒープなどを列挙して VM 使用率を計算できないのはなぜですか? メモリ マネージャのクライアントにアドレス空間の残り量を正確に報告するにはどうすればよいですか? それらの無数の衝突は、メモリ用語集の名前空間にあるのでしょうか?
短期的にはオンライン リソースが最も役に立ちますが、中期的には書籍でも問題ありません。
memory - メモリの領域が非キャッシュとマークされるのはなぜですか?
組み込みアプリケーションでは、アウト ターゲット ボードで有効なさまざまなアドレス範囲を説明する表があります。このテーブルは、MMU のセットアップに使用されます。
RAM アドレス範囲はキャッシュ可能としてマークされていますが、他の領域はキャッシュ不可としてマークされています。何故ですか?
winapi - アプリケーションが消費しているアドレス空間の量を調べて、ユーザーに報告するにはどうすればよいですか?
私は、20 人余りのコーダー チームの一員として、アプリケーションのメモリ マネージャーを作成しています。メモリ クォータが不足しており、約 700Mb しか使用していないように見えるため、何が起こっているかを確認できる必要があります。フラグメンテーションなど、すべてがどこに向かっているのかを報告できるようにする必要があります。何かアイデアはありますか?