Sun Studio 12: dbx コマンドによるデバッグ

メモリー使用状況検査の使用

メモリー使用状況検査は、使用中のヒープメモリーすべてを確認することができます。この情報によって、プログラムのどこでメモリーが割り当てられたか、またはどのプログラムセクションが大半の動的メモリーを使用しているかを知ることができます。この情報は、プログラムの動的メモリー消費を削減するためにも有効であり、パフォーマンスの向上に役立ちます。

メモリー使用状況検査は、パフォーマンス向上または仮想メモリーの使用制御に役立ちます。プログラムが終了したら、メモリー使用状況レポートを生成できます。 メモリー使用情報は、メモリーの使用状況を表示させるコマンド (showmemuse) を使用して、プログラムの実行中に随時取得することもできます。詳細については、showmemuse コマンド」を参照してください。

メモリー使用状況検査をオンにすると、リーク検査もオンになります。プログラム終了時のリークレポートに加えて、使用中ブロック (biu) レポートも得ることができます。デフォルトでは、使用中ブロックの簡易レポートがプログラムの終了時に生成されます。 メモリー使用状況レポートの詳細を制御するには、dbx 環境変数 rtc_biu_at_exit (dbx 環境変数の設定」を参照) を使用します。

次に、典型的な簡易メモリー使用状況レポートを示します。


ブロック使用量の報告 (ブロック使用量: 5   合計サイズ: 40 バイト)

 合計     割合    ブロック  平均     割り当て呼び出しスタック
 サイズ          %     数      サイズ
========== ====    ======    ======   =====================================
     16  40%     2       8   nonleak < nonleak
      8  20%     1       8   nonleak < main
      8  20%     1       8   cyclic_leaks < main
      8  20%     1       8   cyclic_leaks < main

次に、対応する詳細メモリー使用状況レポートを示します。

ブロック使用量の報告 (ブロック使用量: 5   合計サイズ: 40 バイト)

ブロック使用状況(biu):
2 個のブロックを見つけました。合計 16 bytes (合計 40.00%; 平均ブロックサイズ 8)
割り当て時のスタックの状態:
     [1] nonleaks()    行番号 182 "memuse.c"
     [2] nonleaks()    行番号 185 "memuse.c"

ブロック使用状況(biu):
サイズ 8 bytes のブロックをアドレス 0x21898 で見つけました (合計 20.00%)
割り当て時のスタックの状態:
     [1] nonleaks()    行番号 182 "memuse.c"
     [2] main()        行番号  74 "main.c"

ブロック使用状況(biu):
サイズ 8 bytes のブロックをアドレス 0x21958 で見つけました (合計 20.00%)
割り当て時のスタックの状態:
     [1] cycle_leaks() 行番号 154 "memuse.c"
     [2] main()        行番号 118 "main.c"

ブロック使用状況(biu):
サイズ 8 bytes のブロックをアドレス 0x21978 で見つけました (合計 20.00%)
割り当て時のスタックの状態:
     [1] cycle_leaks() 行番号 155 "memuse.c"
     [2] main()        行番号 118 "main.c"

showmemuse コマンドを使用すると、メモリー使用状況レポートをいつでも要求できます。