[解決済み] アプリケーションやプロセスの実際のメモリ使用量を測定するにはどうすればよいですか?
質問
Linuxでアプリケーションやプロセスのメモリ使用量を測定するにはどうしたらいいですか?
のブログ記事より
Linuxのメモリ使用量を理解する
,
ps
は、この意図のために使用する正確なツールではありません。
なぜ
ps
は"false"です。
見方によっては
ps
は、プロセスの実際のメモリ使用量を報告するものではありません。本当にやっていることは、各プロセスがどれだけの実メモリを消費するかを示すことです。
もしそれが唯一のプロセスであったなら
. もちろん、典型的な Linux マシンでは、常に数十のプロセスが実行されているため、VSZ や RSS が報告する数値は
ps
は、ほぼ間違いなく
誤り
.
<サブ (注)この質問は こちら を詳しく説明します)。
解決方法は?
と
ps
や類似のツールでは、そのプロセスによって割り当てられたメモリページの量だけを得ることができます。この数値は正しいのですが
-
は、アプリケーションが実際に使用するメモリ量を反映しておらず、アプリケーションのために予約されたメモリ量のみを反映しています。
-
複数のスレッドや動的リンクライブラリの使用などでページが共有されている場合、誤解を招く可能性があります。
アプリケーションが実際に使用するメモリ量を本当に知りたい場合は、プロファイラで実行する必要があります。例えば ヴァルグラインド は、使用されるメモリの量について、そしてより重要なこととして、プログラム内のメモリリークの可能性についての洞察を与えてくれます。Valgrind のヒーププロファイラツールは 'massif' と呼ばれています。
<ブロッククオートMassifはヒーププロファイラです。プログラムのヒープを定期的にスナップショットすることで、詳細なヒーププロファイリングを実行します。プログラムのどの部分が最も多くのメモリを割り当てたかという情報を含む、ヒープの使用状況を時系列で表示するグラフが作成されます。このグラフは、テキストファイルまたはHTMLファイルによって補完され、最も多くのメモリが割り当てられている場所を特定するための詳細な情報を含んでいます。Massif は、通常の約 20 倍の速度でプログラムを実行します。
で説明したように Valgrindのドキュメント の場合、Valgrindを通してプログラムを実行する必要があります。
valgrind --tool=massif <executable> <arguments>
Massif は、メモリ使用量のスナップショットのダンプを書き込みます(例.
massif.out.12345
). これらの情報は、(1) メモリ使用量のタイムライン、(2) 各スナップショットについて、プログラムのどこでメモリが割り当てられたかを記録したものです。これらのファイルを分析するための優れたグラフィカルツールは、次のとおりです。
マッシブ・ビジュアライザー
. しかし、私は
ms_print
Valgrindに同梱されているテキストベースのシンプルなツールで、すでに大きな助けになっています。
メモリリークを見つけるには、(デフォルトの)
memcheck
というツールがあります。
関連
-
ゼロからLinuxのisoイメージを作る方法(グラフィックチュートリアル)
-
deepinv20 linux ファイルのサフィックスを変更する方法は?Linuxでファイルの拡張子を変更する方法
-
Kali Linuxのデスクトップの外観スタイルを変更するには? KALIの外観の最適化のヒント
-
Linux Mintシステムでプログラムをアンインストールするには? Linux で不要なアプリケーションをアンインストールするためのヒント
-
Linux Mintで入力メソッドを削除する方法は?Linux Mintで冗長な入力メソッドを削除するためのヒント
-
[解決済み] Javaでメモリーリークを発生させるにはどうしたらいいですか?
-
[解決済み] ワイルドカードマッチングに基づいて、現在のフォルダとサブフォルダ内のすべてのファイルを再帰的に検索するにはどうすればよいですか?
-
[解決済み] Linux上で動作するC++コードのプロファイリングを行うにはどうすればよいですか?
-
[解決済み] プロセスとスレッドの違いは何ですか?
-
[解決済み] Androidでアプリケーションのメモリ使用量を確認するにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Linux ddコマンド詳細説明:データのバックアップ、およびバックアッププロセスでのフォーマット変換のケース
-
Linuxでファイルパーミッションを与えるには?Linuxでファイルに実行可能なパーミッションを追加するためのヒント
-
rsyncとinotfiyの組み合わせでリアルタイムバックアップ問題を実現
-
中国版「浮世」を含むUbuntu 20.04.2リリース
-
deepin depth systemはどのような内容でアップデートされましたか?deepinの最新版アップデート内容まとめ
-
ディープインシステムの画面解像度を設定する方法は?ディープインシステムの解像度を設定する方法
-
floor'への未定義の参照/`&'への未定義の参照
-
[解決済み] フォルダとそのサブフォルダ/ファイルのパーミッションを一括で変更する方法
-
[解決済み] Linuxで特定のポートで動作しているプロセスを停止させる方法は?
-
[解決済み] Linuxのディレクトリ内のファイルを再帰的にカウントする