4

OS Xの「ヒープ」コマンドラインユーティリティは、実行中のプロセスのさまざまなmallocゾーンと個々のmallocチャンクを明らかに列挙できます。特別なデバッグライブラリとリンクしたり、ターゲットプロセスにデバッグヒープ環境変数を設定したりする必要はありません。

それを行うためにどの基本的なメカニズムを使用していますか?私が見つけたすべてのmallocデバッグAPIは、プロセスを起動する前に、プロセス内からフックを設定するか、特別なデバッグライブラリをリンクするか、デバッグ環境変数を設定する必要があります。私が知る限り、ユーティリティのソースコードは利用できず、GoogleとApple.comで何度も検索しても、役立つものは何も見つかりませんでした。

プロセスの常駐サイズは、アプリケーションコードによって実際に要求されたものから大幅に大きくなることが多いため、実際のmallocされたメモリの合計を取得することに主に関心があります。

ありがとう!

4

1 に答える 1

1

で宣言されている malloc ゾーン イントロスペクション API を使用します/usr/include/malloc/malloc.h。各 malloc ゾーンには、 malloc ゾーンによって予約されたメモリ領域を検出するために使用できる関数malloc_introspection_tを公開する構造体へのポインタと、enumeratorそれらの領域内のすべての個々の割り当ての詳細が含まれています。

于 2013-04-23T07:33:07.070 に答える