Top

JvmtiEnvBase クラス関連のクラス (JvmtiEnvBase, JvmtiEnvIterator, VM_GetOwnedMonitorInfo, VM_GetObjectMonitorUsage, VM_GetCurrentContendedMonitor, VM_GetStackTrace, VM_GetMultipleStackTraces, VM_GetAllStackTraces, VM_GetThreadListStackTraces, VM_GetFrameCount, VM_GetFrameLocation, ResourceTracker, JvmtiMonitorClosure, 及びそれらの補助クラス(ThreadInsideIterationClosure))

これらは, JVMTI の機能を実装するために使われているクラス. より具体的に言うと, "JVMTI environment" (JVMTI 環境) を実現するためのクラス.

クラス一覧(class list)


JvmtiEnvBase

概要(Summary)

JVMTI の "JVMTI environment" (JVMTI 環境) を実装するクラスの基底クラス.

1つの JvmtiEnvEnv オブジェクトが 1つの JVMTI environment (= JVMTI エージェントが GetEnv() で取得する jvmtiEnv オブジェクト) に対応する (See: here for details).

    ((cite: hotspot/src/share/vm/prims/jvmtiEnvBase.hpp))
    // One JvmtiEnv object is created per jvmti attachment;
    // done via JNI GetEnv() call. Multiple attachments are
    // allowed in jvmti.

    class JvmtiEnvBase : public CHeapObj {

なお, このクラス自体は abstract class であり, 実際に使われるのはサブクラス (See: JvmtiEnv).

(なお, JVMTI environment には JVMTI connection (JVMTI 接続) 毎の状態を管理する役割と JVMTI 関数へのポインタ(environment pointer)を提供する役割があるが, このクラスは状態管理を行う機能と JVMTI 関数内で使われる補助関数を提供している. ただし, 一部の状態は JvmtiEnvThreadState クラスや JvmtiThreadState クラスが管理している. (See: here for details))

詳細(Details)

See: here for details


JvmtiEnvIterator

概要(Summary)

JVMTI の機能を実装するために使われている補助クラス(StackObjクラス).

生成された全ての JvmtiEnv オブジェクトをたどるためのイテレータクラス.

    ((cite: hotspot/src/share/vm/prims/jvmtiEnvBase.hpp))
    // This class is the only safe means of iterating through environments.
    // Note that this iteratation includes invalid environments pending
    // deallocation -- in fact, some uses depend on this behavior.

    class JvmtiEnvIterator : public StackObj {

使われ方(Usage)

JVMTI 関連の様々な処理で使用されている (#TODO).

詳細(Details)

See: here for details


VM_GetOwnedMonitorInfo

概要(Summary)

JvmtiEnv クラス内で使用される補助クラス(VM_Operationクラス).

指定されたスレッドが所有するモニターの情報(およびそれらのモニターをロックしているスタックフレームの深さ)を取得する.

    ((cite: hotspot/src/share/vm/prims/jvmtiEnvBase.hpp))
    // VM operation to get monitor information with stack depth.
    class VM_GetOwnedMonitorInfo : public VM_Operation {

使われ方(Usage)

JvmtiEnv::GetOwnedMonitorInfo() 内, 及び JvmtiEnv::GetOwnedMonitorStackDepthInfo() 内で(のみ)使用されている (See: here for details).

詳細(Details)

See: here for details


VM_GetObjectMonitorUsage

概要(Summary)

JvmtiEnv クラス内で使用される補助クラス(VM_Operationクラス).

指定されたオブジェクトのモニター情報を取得する.

    ((cite: hotspot/src/share/vm/prims/jvmtiEnvBase.hpp))
    // VM operation to get object monitor usage.
    class VM_GetObjectMonitorUsage : public VM_Operation {

使われ方(Usage)

JvmtiEnv::GetObjectMonitorUsage() 内で(のみ)使用されている (See: here for details).

詳細(Details)

See: here for details


VM_GetCurrentContendedMonitor

概要(Summary)

JvmtiEnv クラス内で使用される補助クラス(VM_Operationクラス).

指定されたスレッドが現在モニターによってブロックされている場合 (java.lang.Object.wait() で待機しているか, モニター確保のためブロックしている場合), そのモニターの情報を取得する.

    ((cite: hotspot/src/share/vm/prims/jvmtiEnvBase.hpp))
    // VM operation to get current contended monitor.
    class VM_GetCurrentContendedMonitor : public VM_Operation {

使われ方(Usage)

JvmtiEnv::GetCurrentContendedMonitor() 内で(のみ)使用されている (See: here for details).

詳細(Details)

See: here for details


VM_GetStackTrace

概要(Summary)

JvmtiEnv クラス内で使用される補助クラス(VM_Operationクラス).

指定されたスレッドのスタックトレースを取得する.

    ((cite: hotspot/src/share/vm/prims/jvmtiEnvBase.hpp))
    // VM operation to get stack trace at safepoint.
    class VM_GetStackTrace : public VM_Operation {

使われ方(Usage)

JvmtiEnv::GetStackTrace() 内で(のみ)使用されている (See: here for details)

詳細(Details)

See: here for details


VM_GetMultipleStackTraces

概要(Summary)

JvmtiEnv クラス内で使用される補助クラスの基底クラス.

指定された複数のスレッドのスタックトレースを取得する.

    ((cite: hotspot/src/share/vm/prims/jvmtiEnvBase.hpp))
    // VM operation to get stack trace at safepoint.
    class VM_GetMultipleStackTraces : public VM_Operation {

なお, このクラス自体は abstract class であり, 実際に使われるのはサブクラス.

詳細(Details)

See: here for details


VM_GetAllStackTraces

概要(Summary)

JvmtiEnv クラス内で使用される補助クラス(VM_Operationクラス). VM_GetMultipleStackTraces クラスの具象サブクラスの1つ.

全てのスレッドのスタックトレースを取得する.

    ((cite: hotspot/src/share/vm/prims/jvmtiEnvBase.hpp))
    // VM operation to get stack trace at safepoint.
    class VM_GetAllStackTraces : public VM_GetMultipleStackTraces {

使われ方(Usage)

JvmtiEnv::GetAllStackTraces() 内で(のみ)使用されている (See: here for details).

詳細(Details)

See: here for details


VM_GetThreadListStackTraces

概要(Summary)

JvmtiEnv クラス内で使用される補助クラス(VM_Operationクラス). VM_GetMultipleStackTraces クラスの具象サブクラスの1つ.

複数の指定されたスレッドのスタックトレースを取得する.

    ((cite: hotspot/src/share/vm/prims/jvmtiEnvBase.hpp))
    // VM operation to get stack trace at safepoint.
    class VM_GetThreadListStackTraces : public VM_GetMultipleStackTraces {

使われ方(Usage)

JvmtiEnv::GetThreadListStackTraces() 内で(のみ)使用されている (See: here for details).

詳細(Details)

See: here for details


VM_GetFrameCount

概要(Summary)

JvmtiEnv クラス内で使用される補助クラス(VM_Operationクラス).

指定されたスレッドのスタック中にあるスタックフレームの数を取得する.

    ((cite: hotspot/src/share/vm/prims/jvmtiEnvBase.hpp))
    // VM operation to count stack frames at safepoint.
    class VM_GetFrameCount : public VM_Operation {

使われ方(Usage)

JvmtiEnv::GetFrameCount() 内で(のみ)使用されている (See: here for details).

詳細(Details)

See: here for details


VM_GetFrameLocation

概要(Summary)

JvmtiEnv クラス内で使用される補助クラス(VM_Operationクラス).

指定されたスタックフレームについて, 現在の実行地点(実行しているメソッド, および bci(bytecode index))を取得する.

    ((cite: hotspot/src/share/vm/prims/jvmtiEnvBase.hpp))
    // VM operation to frame location at safepoint.
    class VM_GetFrameLocation : public VM_Operation {

使われ方(Usage)

JvmtiEnv::GetFrameLocation() 内で(のみ)使用されている (See: here for details).

詳細(Details)

See: here for details


ResourceTracker

概要(Summary)

JvmtiExtensions クラス内で使用される補助クラス (See: JvmtiExtensions).

「メモリ確保処理を複数回行い, そのうち一つでも失敗したら全ての確保処理をキャンセルする(確保した領域を全て開放する)」 という処理パターンを簡単に記述するための補助クラス(StackObjクラス). このクラスの ResourceTracker::allocate() メソッド経由で確保を行うと, 1つでも失敗した場合はデストラクタで全て開放してくれる.

    ((cite: hotspot/src/share/vm/prims/jvmtiEnvBase.hpp))
    // ResourceTracker
    //
    // ResourceTracker works a little like a ResourceMark. All allocates
    // using the resource tracker are recorded. If an allocate using the
    // resource tracker fails the destructor will free any resources
    // that were allocated using the tracker.
    // The motive for this class is to avoid messy error recovery code
    // in situations where multiple allocations are done in sequence. If
    // the second or subsequent allocation fails it avoids any code to
    // release memory allocated in the previous calls.
    //
    // Usage :-
    //   ResourceTracker rt(env);
    //   :
    //   err = rt.allocate(1024, &ptr);

    class ResourceTracker : public StackObj {

使われ方(Usage)

JvmtiExtensions::get_functions() 内, 及び JvmtiExtensions::get_events() 内で(のみ)使用されている (See: here for details).

詳細(Details)

See: here for details


JvmtiMonitorClosure

概要(Summary)

JvmtiEnvBase クラス内で使用される補助クラス.

指定されたスレッドが所有するモニターの情報(およびそれらのモニターをロックしているスタックフレームの深さ)を取得する.

    ((cite: hotspot/src/share/vm/prims/jvmtiEnvBase.hpp))
    // Jvmti monitor closure to collect off stack monitors.
    class JvmtiMonitorClosure: public MonitorClosure {

使われ方(Usage)

JvmtiEnvBase::get_owned_monitors() 内で(のみ)使用されている.

詳細(Details)

See: here for details


ThreadInsideIterationClosure

概要(Summary)

JvmtiEnvBase::check_for_periodic_clean_up() 内で定義されているローカルクラス.

JVMTI environment を辿る処理が現在行われているかどうかを調べる.

    ((cite: hotspot/src/share/vm/prims/jvmtiEnvBase.cpp))
      class ThreadInsideIterationClosure: public ThreadClosure {

使われ方(Usage)

JvmtiEnvBase::check_for_periodic_clean_up() 内で(のみ)使用されている. そして, この関数は JvmtiGCMarker::JvmtiGCMarker() 内で(のみ)呼び出されている (See: JvmtiGCMarker).

詳細(Details)

See: here for details



This document is available under the GNU GENERAL PUBLIC LICENSE Version 2.