0

私は単純なプログラムを持っています例えばC++で

#include <iostream>  
int main()  
{  
    int a = 1000;  
    std::cout << a << std::endl;  
    return 0;  
}  

そして私はGNU時間でメモリ使用量を計算しようとしています。しかし、「時間」出力(私の形式では問題ありません)では、メモリ内のプロセスの最大サイズは、printf関数(std :: coutの呼び出し)を持ち、3.5Mbに等しいlibc.soで計算されます。
共有ライブラリをロードせずにプロセスメモリを計算する方法はありますか?

UPDいくつかの理由により、測定したいメモリを実行している間は実行できません。私は外側のラッパーツールでそれを行う方法があるかどうか尋ねています(のようtimeに)

4

1 に答える 1

0

ユーティリティ、またはpid 123のプロセス、および独自のプロセスのファイルを読み取るpmapだけで、メモリの詳細なマップが得られます。次に、測定したくないライブラリに関する行を無視できます。/proc/123/maps/proc/self/maps

cat /proc/self/mapsもっと理解してみてください...(そのcatコマンドのマップが表示されます)。

これはLinux固有です(おそらくSolarisまたはFreeBSDでは動作しません)。

より標準的なgetrusageシステムコールもあります(共有ライブラリで使用されるメモリを他のメモリ使用と区別しません)。

于 2011-11-29T18:53:00.367 に答える