問題タブ [memory-profiling]
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.
java - ConcurrentHashMap メモリ オーバーヘッド
ConcurrentHashMap のメモリ オーバーヘッドを (「従来の」HashMap と比較して) 知っている人はいますか?
- 工事中?
- 要素の挿入時?
debugging - メモリ転送とアクセスを検出して可視化するツール
疎行列の LU 分解を計算する C コードに問題があります。そこで、さまざまな最適化を行った別のルーチンを作成します。行列の非ゼロ要素の構造に応じて、一部の実装は非常に高速になりますが、次の例の行列では遅すぎます。ここで、アプリケーションのプロファイルを作成し、コードがメモリからの新しいデータを待機する場所やキャッシュの使用方法を示すツールが必要です。私はすでに valgrind(cachegrind/callgrind) を試しましたが、オーバーヘッドが大きすぎて、異なる実装のランタイム間の比率が完全に変わりました。
メモリ トラフィックや同様の問題を分析するための他の OpenSource ツール (Linux、BSD) はありますか? カーネル モジュールを使用しないでください。
python - Python3メモリプロファイラーまたは単純な代替
重複の可能性:
Python3のワーキングメモリプロファイラーはありますか
どのオブジェクトがメモリを使い果たしているかを調べたいスクリプトがあります。さらに、Python 3用である必要があります。そのために提案されたモジュールをいくつか見つけましたが、それらは古いことが多く、Python 3用にコーディングされていません。また、すべてをインストールして試すのは非常に面倒です。
どのメモリプロファイラーが私に次の統計を与えることができるか知っていますか、または多分あなたは私がかなり短いスクリプトを調べるためにアドホックにプログラムできる手動のPythonハックを知っていますか(私によって書かれていないので混乱します:()?
実行後のオブジェクト数と、このオブジェクトが作成された行を確認したいと思います。それで全部です :)
何か案は?
編集:1つのアイデアは、クラス変数の初期化をカウントするクラスによってすべてのオブジェクトのインスタンス化をラップすることです。dict、listなどのすべてのインスタンス化を書き直す必要があるだけです。
c++ - メモリが消費されている場所を見つける
私はこの比較的大きな数値アプリケーション コードを持っています。これは数日間実行され、最終的にいくつかの数値を吐き出す可能性があります。全体が C++ で書かれており、多数のサードパーティ ライブラリを利用し、GCC 4.6 を使用してコンパイルされています。コード全体で共有ポインターを使用します。
残念なことに、時間が経つにつれて、コードのメモリ消費量が増加し、すべての (共有) メモリが使い果たされてクラッシュします。アルゴリズム的に、コードは時間の経過とともにメモリを構築するべきではないため、どこかにバグがあるでしょう。
valgrind のリーク チェッカーを使用して小さな例を実行しましたが、すべて問題ないことが報告されました。私の考えでは、共有ポインターが意図せずにどこかに作成され、プロセス中に不要なデータが解放されるのを防いでいる可能性があります (ただし、これは単なる推測です)。
結局のところ、そのようなことをデバッグする方法のアイデアが不足しています。何か案は?
.net - typeperf が報告する内容と他のすべてのツール (mem プロファイラー、プロセス エクスプローラー、フル ダンプ) との不一致
同じ .net 3.5 アプリケーションの 2 つのバージョンの前後比較をしようとすると、使用するツールによっては一貫性のない結果が得られます。
typeperf - これは信頼できると思いますが、次のように述べています。
- v1: 244MB / 260MB (プライベート バイト / ワーキング セット)
- v2: 281MB / 296MB
Process Explorerでは、パフォーマンス グラフに次の数値が表示されます。
- v1: 283MB (プライベート バイト)
- v2: 262MB
そのため、typeperf は v2 がより多くのメモリを消費したと言っていますが、Process Explorer は反対のことを主張しています。
これらはすべて別々の測定値であり、異なる実行ですが、数値は驚くほど確実に再現可能です。
前述の 2 つのツールに加えて、 Process Explorer から完全なメモリ ダンプを取得し、ファイル サイズのみを確認しました (WinDbg を実行したり、その他の方法で分析したりする時間がありませんでした)。
- v1: 484MB (完全なダンプ ファイル サイズ)
- v2: 480MB
また、アプリを.net Memory Profilerから実行すると、ネイティブ メモリ、.net メモリ、および合計メモリの両方が、v1 よりも v2 の方が低くなります。
したがって、それは世界の他の地域に対して typeperf であるようです (WinDbg 分析はまだ未解決です)。
誰が正しいのか、どうすればわかりますか?
.net - .NET でプログラムを使用して、割り当てられた GC 追跡オブジェクトの総数を取得することは可能ですか?
.NET でプログラムを使用して、割り当てられた GC 追跡オブジェクトの総数を取得することは可能ですか?
これを行うには、メモリ プロファイラーをアタッチします。ただし、実行時にこの図を見つけることができないようです。出来ますか?できれば世代ごとに。
c - Cアプリケーションでの最大メモリ使用量のプロファイリング-Linux
私はLinuxでphp用のCモジュールを開発しており、最大のメモリスパイク(使用量)によってコードのプロファイルを作成するのに役立つ方法を見つけようとしています。
valgrindを使用すると、コード内で合計メモリ割り当てを取得できます。しかし、割り当てられたメモリがあるので、それは行き来します;)。私が取得する必要があるのは、Cアプリケーションの実行中に表示された最大のメモリ使用量です。これにより、メモリ要件の全体像を把握し、コードを最適化するための測定ポイントを得ることができます。
誰かが役立つツール/トリック/グッドプラクティスを知っていますか?
java - スタンドアロンのEclipseMATを実行するにはどうすればよいですか?
jmapを使用してhprofを生成しました。
現在、Eclipseで* .hprofを解析しているときに、OOM /'JavaHeapSpace'エラーが発生します。スタンドアロンで実行する必要があると思います。
どうすれば実行できますか?参照はありますか?
memory-management - .NETでメモリリークを分離する方法
私はこの質問が以前に尋ねられたことを知っていますが、そこにある情報の多くは時代遅れのようです。
.NETアプリケーションのメモリリークをオブジェクトタイプまたは名前空間に分離することは可能ですか?これを実行できる無料の最新ツールはありますか?
現在、perfmonを使用してプライベートバイトとヒープのメモリ使用量を監視していますが、問題のあるクラスまたはコードの一部を分離したいと思います。
memory-profiling - Windows Azure のメモリ プロファイル
ローカル (エミュレーター) 展開で Windows Azure アプリケーション (ワーカー ロール) のメモリ割り当てプロファイルを実行するにはどうすればよいですか?