- 既知のすべてのサブインタフェース:
- ArrayReference,- ClassLoaderReference,- ClassObjectReference,- ModuleReference,- StringReference,- ThreadGroupReference,- ThreadReference
FieldやLocalVariableに固有のオブジェクトではありません。 ObjectReferenceは、いくつかのフィールドまたは変数、あるいはその両方から0または1つ以上の参照を持つことができます。 
 
 ObjectReferenceを直接的または間接的にパラメータとするObjectReferenceのメソッドは、ターゲットVMが切断され、VMDisconnectEventがEventQueueから読み取られているか、または読み取られている場合はVMDisconnectedExceptionをスローする可能性があります。
 
 直接または間接にObjectReferenceをパラメータとするObjectReferenceのメソッドは、ターゲットVMのメモリーが不足している場合はVMOutOfMemoryExceptionをスローする可能性があります。
 
 ObjectReferenceを直接的または間接的にパラメータに取るObjectReference上の任意のメソッドは、ミラー・オブジェクトがガベージ・コレクトされた場合にObjectCollectedExceptionをスローします。
- 導入されたバージョン:
- 1.3
- 
フィールドのサマリーフィールド修飾子と型フィールド説明static final int非仮想メソッドの呼出しを実行します。static final int呼出し側のスレッドだけを再開してメソッドの呼出しを実行します。
- 
メソッドのサマリー修飾子と型メソッド説明voidこのオブジェクトに対するガベージ・コレクションを回避します。voidこのオブジェクトのガベージ・コレクションを許可します。int現在所有しているスレッドが、このオブジェクトのモニターにエントリした回数を返します。boolean指定されたObjectがこのObjectReferenceと等しいかどうか比較します。このオブジェクトの指定されたインスタンスまたはstaticフィールドの値を取得します。このオブジェクトの複数のインスタンスまたはstaticフィールド、あるいはその両方の値を取得します。inthashCode()このObjectReferenceのハッシュ・コード値を返します。invokeMethod(ThreadReference thread, Method method, List<? extends Value> arguments, int options) ターゲットVM内のこのオブジェクトで指定されたMethodを呼び出します。booleanターゲットVMでこのオブジェクトがガベージ・コレクトされているかどうかを判定します。このオブジェクトのモニターを現在所有するスレッドがある場合は、そのスレッドのThreadReferenceを返します。このオブジェクトの型をミラー化するReferenceTypeを取得します。referringObjects(long maxReferrers) このオブジェクトを直接参照するオブジェクトを返します。voidこのオブジェクトのインスタンス・フィールドまたはstaticフィールドの値を設定します。longuniqueID()このObjectReferenceの一意の識別子を返します。このオブジェクトのモニターを現在待機している各スレッドのThreadReferenceを含むリストを返します。インタフェース com.sun.jdi.Mirrorで宣言されたメソッドtoString, virtualMachine
- 
フィールド詳細- 
INVOKE_SINGLE_THREADEDstatic final int INVOKE_SINGLE_THREADED呼出し側のスレッドだけを再開してメソッドの呼出しを実行します。- 関連項目:
 
- 
INVOKE_NONVIRTUALstatic final int INVOKE_NONVIRTUAL非仮想メソッドの呼出しを実行します。- 関連項目:
 
 
- 
- 
メソッドの詳細- 
referenceTypeReferenceType referenceType()このオブジェクトの型をミラー化するReferenceTypeを取得します。 この型は、現在この型を保持するフィールドまたは変数の、宣言された型のサブクラスまたは実装元になります。 たとえば、次の文の直後で使用します。Object obj = new String("Hello, world!");objのReferenceTypeは、java.lang.Objectではなく、java.lang.Stringをミラー化します。 オブジェクトの型は不変なので、このメソッドはミラー化されたオブジェクトの寿命の間は常に同じReferenceTypeを返します。 返されるReferenceTypeは、 ClassTypeまたはArrayTypeです。InterfaceTypeは返されません。- 戻り値:
- このオブジェクトのReferenceType。
 
- 
getValueこのオブジェクトの指定されたインスタンスまたはstaticフィールドの値を取得します。 Fieldは、このObjectReferenceに対して有効である必要があります。つまり、Fieldは、ミラー化されたオブジェクトのクラスのフィールド、またはそのクラスのスーパー・クラスのフィールドである必要があります。- パラメータ:
- sig- 要求された値を含むフィールド
- 戻り値:
- インスタンス・フィールドのValue。
- 例外:
- IllegalArgumentException- フィールドがこのオブジェクトのクラスにとって有効でない場合。
 
- 
getValuesこのオブジェクトの複数のインスタンスまたはstaticフィールド、あるいはその両方の値を取得します。 Fieldは、このObjectReferenceに対して有効である必要があります。つまり、Fieldは、ミラー化されたオブジェクトのクラスのフィールド、またはそのクラスのスーパー・クラスのフィールドである必要があります。- パラメータ:
- fields- 要求された値を含む- Fieldオブジェクトのリスト。
- 戻り値:
- Valueを含む、要求された- Fieldオブジェクトのマップ。
- 例外:
- IllegalArgumentException- このオブジェクトのクラスにとって無効なフィールドがある場合。
 
- 
setValuevoid setValue(Field field, Value value) throws InvalidTypeException, ClassNotLoadedException このオブジェクトのインスタンス・フィールドまたはstaticフィールドの値を設定します。Fieldは、このObjectReferenceに対して有効である必要があります。つまり、Fieldは、ミラー化されたオブジェクトのクラスのフィールド、またはそのクラスのスーパー・クラスのフィールドである必要があります。 フィールドはfinalであってはいけません。オブジェクトの値は、このフィールドの型への代入互換性を持たなければいけません(これは、このフィールド型は、囲むクラスのクラス・ローダーによってロードする必要があることを意味する)。 プリミティブ値は、このフィールドの型への代入互換性を持つか、情報を失わずにこのフィールドの型に変換できる必要があります。 割当ての互換性の詳細は、「Java言語仕様」の5.2に関する項を参照してください。 - パラメータ:
- field- 要求された値を含むフィールド
- value- 代入する新しい値
- 例外:
- IllegalArgumentException- フィールドがこのオブジェクトのクラスに対して有効でないか、フィールドがfinalの場合。
- InvalidTypeException- 値の型がフィールドの型に一致しない場合。
- ClassNotLoadedException- valueがnullでなく、適切なクラス・ローダーによるフィールドの型のロードがまだ行われていない場合。
- VMCannotBeModifiedException- VirtualMachineが読取り専用の場合(- VirtualMachine.canBeModified()を参照)。
 
- 
invokeMethodValue invokeMethod(ThreadReference thread, Method method, List<? extends Value> arguments, int options) throws InvalidTypeException, ClassNotLoadedException, IncompatibleThreadStateException, InvocationException ターゲットVM内のこのオブジェクトで指定されたMethodを呼び出します。 指定するメソッドは、このオブジェクトのクラス、このオブジェクトのクラスのスーパー・クラス、またはこのオブジェクトによって実装されたインタフェース内で定義できます。 このメソッドには、staticメソッドまたはインスタンス・メソッドを指定できますが、static初期化子やstaticコンストラクタを指定することはできません。 新規オブジェクトを作成し、そのコンストラクタを実行するには、ClassType.newInstance(com.sun.jdi.ThreadReference, com.sun.jdi.Method, java.util.List<? extends com.sun.jdi.Value>, int)を使用します。メソッド呼出しは、指定されたスレッドで実行されます。 指定されたスレッドがそのスレッド内で発生したイベントにより中断される場合にのみ、メソッドの呼出しを行います。 ターゲットVMが VirtualMachine.suspend()によって中断された場合、または指定されたスレッドがThreadReference.suspend()によって中断された場合、メソッドの呼出しはサポートされません。指定されたメソッドは、指定された引数リスト内の引数を使用して呼び出されます。 メソッドの呼出しは、同期をとられます。呼び出されたメソッドがターゲットVMで復帰するまで、このメソッドは復帰しません。 呼び出されたメソッドが例外をスローする場合、このメソッドはスローされた例外オブジェクトに対するミラーを含む InvocationExceptionをスローします。オブジェクト引数は、この引数型への代入互換性を持たなければいけません(これは、この引数型は、囲むクラスのクラス・ローダーによってロードする必要があることを意味する)。 プリミティブ引数は、この引数型への代入互換性を持っているか、情報を失わずにこの引数型に変換できる必要がある。 呼び出されているメソッドが引数の可変数を受け取る場合、最後の引数型が特定の要素型の配列になります。 一致する位置にある引数は、省略される(つまりnullとなる)可能性や、あるいは、同じ要素型の配列になる(つまり、同じ型のほかの引数の任意の数が続く要素型の引数となる)可能性があります。 引数が省略される場合は、配列の長さがゼロである要素型が渡されます。 要素型はプリミティブ型である可能性もあります。 自動ボックス化はサポートされていません。 割当ての互換性の詳細は、「Java言語仕様」の5.2に関する項を参照してください。 デフォルトでは、「Java言語仕様」の15.12.4.4の項で説明されているように、このメソッドは動的ルックアップを使用して呼び出されます。特に、この ObjectReferenceによってミラー化されたオブジェクトの実行時タイプに基づいてオーバーライドされます。 この動作を変更するには、options引数にINVOKE_NONVIRTUALビット・フラグを指定します。 このフラグを設定すると、このオブジェクトの実行時の型に対してオーバーライドが発生するかどうかにかかわらず、指定されたメソッドが呼び出されます。 この場合、メソッドにクラスまたはインタフェースの実装が含まれている必要があります。 このオプションは、Javaプログラミング言語のsuperキーワードで実行されるようなメソッドの呼出しに使用します。デフォルトでは、ターゲットVM内のすべてのスレッドがメソッドの呼出し中に再開されます(イベントや VirtualMachine.suspend()またはThreadReference.suspend()によって以前に中断されたスレッドの場合)。 これは、いずれかのスレッドが、呼出し先メソッドが必要とするモニターを所有している場合に、デッドロックが発生するのを防ぎます。 ただし、この暗黙の再開は、ThreadReference.resume()とまったく同様に行われるため、スレッドの中断カウントが1を超える場合は、呼出し中にスレッドが再開されません。このため、デッドロックが発生する可能性があることに留意してください。 デフォルトでは、ターゲットVM内のすべてのスレッドは、呼出しの完了時に中断します(呼出し前のスレッドの状態とは無関係)。 ブレークポイントまたはほかのイベントが、呼出し中に発生する可能性があります。 この場合、前述したデッドロックが発生することがあります。 また、invokeMethodがクライアントのイベント・ハンドラ・スレッドから呼び出された場合も、デッドロックが発生することがあります。 この場合、このスレッドはinvokeMethodが完了するまで待機するので、新規イベントの発生に伴うEventSetの読取りを行いません。 この新規EventSetがSUSPEND_ALLである場合、EventSetが再開されないので、デッドロックが発生します。 この状況を避けるには、invokeMethodの実行前にすべてのEventRequestを無効にするか、invokeMethodをクライアントのイベント・ハンドラ・スレッドから呼び出さないようにしてください。options引数にINVOKE_SINGLE_THREADEDビット・フラグを指定することにより、呼出し中に他のスレッドが再開しないようにできます。ただし、前述のようなデッドロックに対する保護や、デッドロックからの回復ができなくなるため、このオプションはよく注意して利用してください。 指定されたスレッドのみが再開されます(前述したすべてのスレッドの場合と同様)。 シングル・スレッド呼出しが完了すると、呼出し元スレッドは再び中断されます。 シングル・スレッド呼出し中に開始されたすべてのスレッドは、呼出し完了時にも中断されません。呼出し中に VirtualMachine.dispose()などによってターゲットVMが切断された場合でも、メソッドの呼出しは続行されます。- パラメータ:
- thread- 呼出しを行うスレッド。
- method- 呼び出す- Method。
- arguments- 呼び出されたメソッドにバインドされた- Value引数のリスト。 リストから取得した値は、メソッド・シグニチャに指定されている順序で引数に代入される。
- options- 整数ビット・フラグ・オプション。
- 戻り値:
- 呼び出されたメソッドの戻り値のValueミラー。
- 例外:
- IllegalArgumentException- メソッドがこのオブジェクト・クラスのメンバーでない場合、引数リストのサイズがメソッドの宣言された引数の数と一致しない場合、メソッドがコンストラクタまたは静的初期化子の場合、または- INVOKE_NONVIRTUALが指定されていてメソッドが要約。
- ClassNotLoadedException- 引数型が、適切なクラス・ローダーによってロードされていない場合。
- IncompatibleThreadStateException- 指定されたスレッドが、イベントによって中断されていない場合。
- InvocationException- メソッドの呼出しにより、ターゲットVMで例外が発生した場合。
- InvalidTypeException- 引数が次の条件を満たさない場合 -- オブジェクト引数は、この引数型への代入互換性を持たなければなりません。 (これは、囲むクラスのクラス・ローダーによってこの引数型をロードする必要があることを意味する)。 プリミティブ引数は、この引数型への代入互換性を持っているか、情報を失わずにこの引数型に変換できる必要がある。 代入互換性の詳細は、JLSのセクション5.2を参照してください。
- VMCannotBeModifiedException- VirtualMachineが読取り専用の場合(- VirtualMachine.canBeModified()を参照)。
 
- 
disableCollectionvoid disableCollection()このオブジェクトに対するガベージ・コレクションを回避します。 デフォルトでは、JDIにより返されるすべてのObjectReference値は、ターゲットVMの実行中にいつでもガベージ・コレクトが可能です。 このメソッドを呼び出すと、オブジェクトがガベージ・コレクトされないことが保証されます。ガベージ・コレクトを再度有効にするには、enableCollection()を使用します。このメソッドの呼出しは、カウントされます。 このメソッドを呼び出すたびに、 enableCollection()を呼び出して、ガベージ・コレクトを再度有効にする必要があります。ターゲットVMの中断中は、すべてのスレッドが中断しているため、ガベージ・コレクションは行われません。 中断中に変数、フィールド、および配列を調べるという一般的な操作の場合は、明示的にガベージ・コレクションを無効にしなくても安全です。 このメソッドを使用すると、ターゲットVM内のガベージ・コレクションのパターンが変わるため、アプリケーションの動作がデバッガ実行時とデバッガ非実行時とで異なる結果になる可能性があります。そのため、このメソッドの使用には慎重を期してください。 - 例外:
- VMCannotBeModifiedException- VirtualMachineが読取り専用の場合(- VirtualMachine.canBeModified()を参照)。
 
- 
enableCollectionvoid enableCollection()このオブジェクトのガベージ・コレクションを許可します。 デフォルトでは、JDIにより返されるすべてのObjectReference値は、ターゲットVMの実行中にいつでもガベージ・コレクトが可能です。 このメソッドの呼出しは、disableCollection()によってガベージ・コレクトが無効になっている場合にかぎり必要です。- 例外:
- VMCannotBeModifiedException- VirtualMachineが読取り専用の場合(- VirtualMachine.canBeModified()を参照)。
 
- 
isCollectedboolean isCollected()ターゲットVMでこのオブジェクトがガベージ・コレクトされているかどうかを判定します。- 戻り値:
- このObjectReferenceがガベージ・コレクトされている場合はtrue、そうでない場合はfalse。
- 例外:
- VMCannotBeModifiedException- VirtualMachineが読取り専用の場合(- VirtualMachine.canBeModified()を参照)。
 
- 
uniqueIDlong uniqueID()このObjectReferenceの一意の識別子を返します。 この識別子によって、同じVMの破棄されていないすべてのObjectReferenceが一意であることが保証されます。 これは、このObjectReferenceが破棄されるまで保証されます。- 戻り値:
- long型の一意のID
 
- 
waitingThreadsList<ThreadReference> waitingThreads() throws IncompatibleThreadStateExceptionこのオブジェクトのモニターを現在待機している各スレッドのThreadReferenceを含むリストを返します。 モニターを待機していると見なされるスレッドの状態については、ThreadReference.currentContendedMonitor()を参照してください。この操作は、ターゲットVMでサポートされていないことがあります。 この操作がサポートされているかどうかを確認するには、VirtualMachine#canGetMonitorInfoを参照してください。 - 戻り値:
- ThreadReferenceオブジェクトのリスト。 モニターを待機しているスレッドが存在しない場合、リストの長さはゼロになる。
- 例外:
- UnsupportedOperationException- ターゲットVMでこの操作がサポートされていない場合。
- IncompatibleThreadStateException- ターゲットVMに中断されていない待機中のスレッドがある場合
 
- 
owningThreadThreadReference owningThread() throws IncompatibleThreadStateExceptionこのオブジェクトのモニターを現在所有するスレッドがある場合は、そのスレッドのThreadReferenceを返します。 所有権の定義については、ThreadReference.ownedMonitors()を参照してください。この操作は、ターゲットVMでサポートされていないことがあります。 この操作がサポートされているかどうかを確認するには、VirtualMachine#canGetMonitorInfoを参照してください。 - 戻り値:
- モニターを現在所有するThreadReference。モニターが所有されていない場合はnull。
- 例外:
- UnsupportedOperationException- ターゲットVMでこの操作がサポートされていない場合。
- IncompatibleThreadStateException- 所有するスレッドがターゲットVMで中断されていない場合
 
- 
entryCountint entryCount() throws IncompatibleThreadStateException現在所有しているスレッドが、このオブジェクトのモニターにエントリした回数を返します。 所有権の定義については、ThreadReference.ownedMonitors()を参照してください。この操作は、ターゲットVMでサポートされていないことがあります。 この操作がサポートされているかどうかを確認するには、VirtualMachine#canGetMonitorInfoを参照してください。 - 戻り値:
- 整数型のエントリ・カウント。
- 例外:
- UnsupportedOperationException- ターゲットVMでこの操作がサポートされていない場合。
- IncompatibleThreadStateException- 所有するスレッドがターゲットVMで中断されていない場合
- 関連項目:
 
- 
referringObjectsList<ObjectReference> referringObjects(long maxReferrers) このオブジェクトを直接参照するオブジェクトを返します。 ガベージ・コレクト目的で到達可能なオブジェクトだけが返されます。 オブジェクトは、その他の方法でも参照可能です。たとえばスタック・フレーム内でローカル変数を使用する方法、JNIグローバル参照を使用する方法などがあります。 このメソッドでは、このような、オブジェクトを参照しないオブジェクトは返されません。この操作は、ターゲット仮想マシンでサポートされていないことがあります。 この操作がサポートされているかどうかを確認するには、 VirtualMachine.canGetInstanceInfo()を使用します。- パラメータ:
- maxReferrers- 返される参照オブジェクトの最大数。 負でない数値。 ゼロの場合、すべての参照オブジェクトが返される。
- 戻り値:
- ObjectReferenceオブジェクトのリスト。 このオブジェクトを参照するオブジェクトが存在しない場合は、長さゼロのリストを返す。
- 例外:
- UnsupportedOperationException- ターゲット仮想マシンがこの操作をサポートしていない場合(次を参照)。- canGetInstanceInfo()
- IllegalArgumentException- maxReferrersがゼロ未満の場合。
- 導入されたバージョン:
- 1.6
- 関連項目:
 
- 
equalsboolean equals(Object obj) 指定されたObjectがこのObjectReferenceと等しいかどうか比較します。
- 
hashCodeint hashCode()このObjectReferenceのハッシュ・コード値を返します。
 
-