2017-07-28 7 views
0

プログラムを実行した後、トップユーティリティはディスク上のサイズ以上のプログラムで使用されるメモリ(VIRT列)を表示します。結果が違うと私は驚きました。ディスクのファイルサイズは、上のファイルサイズよりも大きいことが判明しました。私の期待に何が間違っているのか説明できますか? P.S.アプリケーションはgccでネイティブに構築されています。プログラムの読み込み後のRAMの使用 - TOPの統計との不一致

+0

あなたはこれを期待する理由を説明できますか?アプリケーションがすぐに復帰する以外は何もしない限り、通常はメモリを使用する共有ライブラリ、データセクションなどがあります。そして、使用されたメモリがファイル以上になると思ったら、なぜそれがもっと驚いたのですか? –

+0

私の間違いだった - 更新された質問を見てください。 – Mikola

答えて

1

実行ファイルのすべての部分が、実行時にメモリにマップされるとは限りません。

実行ファイルをreadelf -WS <executable>(elfの実行形式を前提としています)と調べると、ファイルセクションのリストが表示されます。フラグA (alloc)のセクションのみがロードされます。

たとえば、デバッガで実行されない限り、.debugで始まるセクションはマップされません。これらのセクションは多くの場合、最大です。

関連する問題