問題タブ [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.
c++ - C ++クラスのセットによるメモリ消費をプロファイルする方法は?
gprofを使用して(C ++)プログラムによるメモリ消費量を把握しようとしています。プログラムにはGUIがなく、完全にCLIベースです。
今、私はgprofを初めて使用するので、gprofの実行方法とスポット時間の消費方法を教えてくれたチュートリアルをいくつか読みました。
ただし、特定のクラスのセットによるメモリ消費量を調べる必要があります。多くの種類のプログラムがあるとしましょうA, ..., Z
。次に、プログラムを実行して、クラスのオブジェクトによって使用された累積メモリの数を確認しますA, E, I, O, U
(たとえば)。
このタスクにどのように取り組むことができるか、アイデアや指針はありますか?
私はgprofだけを検討しているわけではなく、仕事を成し遂げるあらゆる(fos)ソフトウェアを受け入れています。
もちろん、私はgoogleとstackoverflow.comの両方でこの問題の答えを検索しましたが、間違ったキーワードを使用しているか、この問題を抱えている人は誰もいません。
編集:これを手動で行うことに関する提案は明らかです。もちろん、それをアプリケーションにコーディングすることもできますが、変更したくないクラスがたくさんあります。また、合計メモリ消費量が必要なので、オブジェクトのサイズを個別に追跡する必要があるため、作成されたすべてのオブジェクトのみをカウントすることはできません。
Edit2:私はDeadMGの提案を修正しましたが、これは継承するだけです。それはかなりうまく機能するので、誰かが同様の問題を抱えている場合は、これを試してください。
マップルックアップは少し厄介です、私はそれを認めます、しかし私は各クラスのイテレータを保存することを世話する神経がありませんでした。主な問題は、カウントされたクラスごとに明示的に初期化する必要があるということでした。あなたがそれをより良くする方法を知っているなら、その方法を教えてください。
java - Web アプリケーション セッションのリソース消費量の測定
Wicket、Guice、および JPA を使用して作成したこの Web アプリケーションがあります。アプリケーションのリソース消費についてクライアントにアドバイスしたいので、購入する最適なハードウェアについてアドバイスすることもできます。セッションごとのメモリと CPU の消費量、およびネットワーク帯域幅の要件を測定する最良の方法は何ですか? そのような測定を行うためのツールはありますか?
python - Google App Engine Apptrace エラー
Apptraceを使用して GAE アプリケーションを プロファイリング しようとしています。そうしようとすると、次のエラーが発生します。
コードにクラス オブジェクトがあると、エラーが表示されます。何を変更すればよいですか?
python - Pythonでマルチスレッドプログラムのメモリをプロファイルするにはどうすればよいですか?
Python でマルチスレッド プログラムのメモリをプロファイリングする方法はありますか?
CPU プロファイリングでは、cProfile を使用してスレッドごとに個別のプロファイラー統計を作成し、後でそれらを結合しています。ただし、メモリ プロファイラーでこれを行う方法が見つかりませんでした。ヒープを使用しています。
cProfile のようにヒーピーで統計を組み合わせる方法はありますか? または、このタスクにより適した他のメモリプロファイラーを提案してください。
関連する質問が、マルチスレッド プログラムでの CPU 使用率のプロファイリングについて尋ねられました: How can I profile a multithread program in Python?
メモリ プロファイラに関する別の質問: Python メモリ プロファイラ
r - Rでのメモリプロファイリング-要約するためのツール
Rprofmem()
Rには、Rprof()
オプション"memory.profiling=TRUE"
や。などのメモリプロファイリング用のツールがいくつか ありますtracemem()
。最後の1つはオブジェクトでのみ使用できるため、オブジェクトがコピーされた回数を追跡するのに役立ちますが、関数ごとの概要は示していません。Rprofmem
それができるはずですが、のような最も単純な関数呼び出しの出力でさえ、lm()
500行を超えるログが得られます。私は実際に何をしているのかを理解しようとしましたRprof("somefile.log",memory.profile=T)
が、実際には理解できていないと思います。
私が最後に見つけたのは、トーマス・ラムリーのこのメッセージでした。
出力を要約するためのツールはまだありません。
Rprofmem()
これは2006年のことでした。セットTRUEの不思議な出力、Rprof()
またはmemory.profile
他のツールのいずれかに基づいて、いくつかの素晴らしい要約のオプションがある可能性はありますか?
java - コードでJVMメモリをプロファイリングする方法は?
Eclipseでテストできないサーブレットを作成しています。サーバーで実行する必要があります。メモリプロファイリングを行い、リークを特定したいと思います。したがって、現在のメモリ使用量を教えてくれるデバッグステートメントを作成する必要があると思います。誰かがこれを行う方法やJDKのどのクラスがこれを行うかについての良い参考資料を教えてもらえますか?
「EclipseMAT」は使用できませんのでご注意ください。
android - Android アプリケーションのメモリ プロファイリングに TraceView を使用する方法
これをアプリケーションのメモリ プロファイリングに参照しTraceView
ています。トレース ファイルを起動すると、TraceView ウィンドウにいくつかの色と項目が表示されます。
では、メモリリークがどこで発生しているのか、色の意味をどのように理解できるのでしょうか。
python - numpy のメモリ プロファイラー
numpy
-- によるとtop
-- 約 5 GB の RAM を使用しているスクリプトがあります。
そのメモリの大部分を使用しているオブジェクトについてのアイデアを得ることができるメモリ プロファイラーはありますか?
私は試しましheapy
たguppy.hpy().heap()
が、私にこれを与えています:
何らかの理由で、5GB のうち 12MB しか占めていません (メモリの大部分はほぼ確実にnumpy
配列によって使用されます)。
私が間違っている可能性があること、または他のどのツールを試す必要があるかについての提案はありますか(このスレッドheapy
で既に言及されているもの以外)?
.net - .NET 4.0InducedGCのソースを追跡する
PerfMonitor.exe(http://bcl.codeplex.com/wikipage?title=PerfMonitor)を使用して、ネイティブコードであるサードパーティライブラリを使用する.NET4.0アプリの.NETパフォーマンスの問題を追跡しています。 。
Perfmonitor GCTimeレポートを実行すると、個々のGCが一覧表示され、いくつかの方法で分類されます。レポートの1つの列は「理由」と呼ばれます。一部のGCにはReason="Induced"があり、他のGCにはReason="SmallAlloc"があります。
「SmallAlloc」というラベルの付いたGCは定期的な割り当て(New Object())によって引き起こされ、「Induced」というラベルの付いたGCは「System.GC.Collect」の呼び出しによって引き起こされたと思います。私が間違った仮定をしたと思われる場合はお知らせください。
System.GC.Collectを呼び出しているコードを見つけようとしていますが、失敗しました。MSVS 2010 Professionalを使用して、System.GC.Collectにブレークポイントを設定し、System.GC.Collectの呼び出しを含む単純なテスト関数を記述して、このブレークポイントが機能することを確認しました。ただし、チューニングしているアプリはそのブレークポイントで壊れないため、System.GC.Collectを呼び出すコードはないと思われます。
mscorwks.dllのネイティブ関数を直接呼び出してSystem.GC.CollectをバイパスすることでGCを誘導するネイティブコードがあるのではないかと思います。System.GC.CollectがmscorwksにあるJitHelpers.cppで_Collectを呼び出していることがわかります。その関数にブレークポイントを設定する方法はありますか?
wpf - StreamResourceInfo.Streamを破棄します
私はリソースからsStreamResourceInfo.Stream
を取得するために使用します。使用後のストリームBitmapImage
は正しいですか?メモリプロファイラーでは、そうするとエラーが発生するため、質問します。メモリプロファイラーは、破棄されたインスタンスがGCされていないと言います。 Close
Dispose
私がウェブを見ると、私はこのトピックへのこの投稿しか見つけることができません。この投稿では、回答者は、処分することは意味がないことを述べています。しかし、状況や効果を見てみると、これは正しくないと思います。誰かが正しい行動が何であるか知っていますか?
追加情報:私が見たmsdnの例では、それらは破棄もクローズもしません。
編集
RickSladkeysの回答のおかげで、私は解決策を見つけました:私StreamResourceInfo.Stream
はのStreamSource
-propertyに割り当てBitmapImage
ます。msdnには次のように記述されています。
BitmapImageの作成後にストリームを閉じる場合は、CacheOptionプロパティをBitmapCacheOption.OnLoadに設定します。デフォルトのOnDemandキャッシュオプションは、ビットマップが必要になるまでストリームへのアクセスを保持し、クリーンアップはガベージコレクターによって処理されます。
これはBitmapImage
、ストリームの所有権を取得することを意味します。ストリームを手動で閉じる/破棄すると、メモリプロファイラーにエラーが表示されるのはそのためです。ビットマップはストリームへの参照(BitmapCacheOption OnDemand)を保持するため、BitmapImageが有効である限り、GCはストリームを解放しませんが、ストリームはすでに明示的に有効になっています。処分された。この特定の例では、廃棄は悪い考えです。
完全を期すために、msdnで、呼び出された上記のリンクの例も調べましたTextRange.Load
。の場合Load
、それは反対でLoad
あり、所有権を取得しないため、終了後にストリームを閉じる/破棄する必要があります。