3

アプリケーションのメモリ使用量を監視する JVMTI エージェントに取り組んでいます。新しいオブジェクト/配列が割り当てられるたびにネイティブ メソッドが呼び出されるように、バイトコード インストルメンテーションを使用してヒープ上のメモリ割り当てを監視することができました。しかし、スタックに割り当てられたメモリの量を決定する方法について、私は本当に混乱しています。アイデア、ヒント、リンクを提供していただければ幸いです。

4

1 に答える 1

2

JVMTI インターフェースからどの程度の詳細を取得したいと考えていますか? 論理的な Java スタック フレーム情報のみを報告しているように見えます。つまり、実際のランタイム スタック スペースがどれだけ使用されているかを知ることはできませんが、 を使用して Java スタック フレームのレイアウトjmethodIDを把握し、妥当な推測を行うことができます (ローカル変数の数は、コンパイル時に特定のメソッドに対して固定されます。 GetLocalVariableTableを参照してください)。ネイティブ メソッドのスタック フレームは表示されません。また、スタックに保存されているその他の JVM 状態 (JIT によって使用されるデバッグ情報やスペース、およびスレッド インフラストラクチャなど) も表示されません。

于 2012-12-08T16:10:08.867 に答える