プロセスのメモリ消費量を調べるためにps
(おそらくwatch
) またはtop
またはを使用できます。htop
たとえば、pid 1234、2345、および 3456 の3 つのプロセスps|grep programname
がある場合 (またはpidof
またはpgrep
などを使用してこれらの pid を見つけることができます)、次のように実行できます。
watch ps -F 1234 2345 3456
これらのアプリケーションのうち、特定の瞬間に最大のメモリを使用する機能はどれですか?
複数の関数が大量のメモリを必要とする場合
コード内の C (または C++) 関数について話していると思います。その場合、上記の両方の質問には意味がありません。メモリ消費は、プログラムのグローバルプロパティです。(そしてこれはよく起こります)ある関数でメモリゾーンが割り当てられ( を呼び出すmalloc
)、別の関数で埋められ、さらに別の関数で解放されます( を呼び出すfree
)場合、どの関数がそのデータを所有しているか、そのメモリを消費しているかを言うのは意味がありません。 .
valgrindを使用することもできます(少なくとも、メモリ リークがないことを確認するため)。
また、プログラムが正しく呼び出された場合、解放されたメモリが常に OS に返されるとは限らないことに注意してくださいmalloc
。free
ほとんどの実装では、将来の呼び出しですぐに再利用できるように -d メモリをmalloc
「保持」しようとします。free
malloc
ガベージ コレクション、メモリ リーク、メモリ管理、特にC の動的メモリ割り当てに関するウィキページを読んでください。RTFM malloc(3) & mmap(2) (mmap
によって使用されるためmalloc
) & proc(5) (/proc/
メモリマップと状態のクエリに使用できるため、cat /proc/$(pidof yourprogram)/maps
その他を使用...) & setrlimit(2) (これにより、たとえば、ulimit
ビルトインのbash
、使用可能なメモリ) & ps(1) & watch(1) & pgrep(1) & pidof(1) . 高度な Linux プログラミングもお読みください