- すべてのスーパー・インタフェース:
PlatformManagedObject
- 既知のすべてのサブインタフェース:
ThreadMXBean
Java仮想マシンは、このインタフェースの実装クラスの単一インスタンスを持ちます。 このインタフェースを実装するこのインスタンスは、ManagementFactory.getThreadMXBean()
メソッドまたはplatform MBeanServer
メソッドを呼び出すことによって取得できるMXBeanです。
MBeanServer内でスレッド・システムのMXBeanを一意に識別するためのObjectName
は次のとおりです。
java.lang:type=Threading
これを取得するには、PlatformManagedObject.getObjectName()
メソッドを呼び出します。
スレッドID
スレッドIDは、スレッドのThread.getId()
メソッドの呼出しにより返された正のlong型の値です。 スレッドIDは一意であり、その寿命を通じて変更されることはありません。 スレッドが終了すると、スレッドIDは再利用可能です。
このインタフェースの一部のメソッドは、入力パラメータとしてスレッドIDまたはスレッドIDの配列を取得してスレッドごとの情報を返します。
スレッドCPU時間
Java仮想マシンの実装では、任意のスレッドやスレッド以外について、現在のスレッドのCPU時間の測定をサポートできます。
isThreadCpuTimeSupported()
メソッドを使用すると、Java仮想マシンで任意のスレッドのCPU時間を測定できるかどうかを判定できます。 isCurrentThreadCpuTimeSupported()
メソッドを使用すると、Java仮想マシンが現在のスレッドのCPU時間の測定をサポートしているかどうかを判定できます。 任意のスレッドのCPU時間測定をサポートするJava仮想マシンの実装は現在のスレッドのCPU時間測定もサポートします。
このインタフェースで発生するCPU時間は、その単位の精度がナノ秒となっていますが、ここではこれほどの精度は要求されません。
Java仮想マシンでは、デフォルトでCPU時間の測定を無効にできます。 isThreadCpuTimeEnabled()
およびsetThreadCpuTimeEnabled(boolean)
メソッドを使って、CPU時間測定が有効になっているかどうかをテストしたり、測定のサポートを有効または無効にしたりすることができます。 スレッドCPU測定を有効にすると、一部のJava仮想マシンの実装では、負荷が大きくなる可能性があります。
スレッド・コンテンション監視
一部のJava仮想マシンは、スレッド・コンテンション監視をサポートします。 スレッド・コンテンション監視が有効な場合、スレッドが同期をブロックしたか通知を待機していた累積経過時間が収集され、ThreadInfo
オブジェクトで返されます。
isThreadContentionMonitoringSupported()
メソッドを使って、Java仮想マシンがスレッド・コンテンション監視をサポートしているかどうかを判定できます。 スレッド・コンテンション監視はデフォルトで無効です。 setThreadContentionMonitoringEnabled(boolean)
メソッドを使って、スレッド・コンテンション監視を有効にすることができます。
同期情報とデッドロック検出
一部のJava仮想マシンは、オブジェクト・モニターの使用量および所有可能なシンクロナイザの使用量の監視をサポートしている場合があります。getThreadInfo(long[], boolean, boolean)
メソッドとdumpAllThreads(boolean, boolean)
メソッドを使用すると、スレッドのスタック・トレースと同期情報(スレッドが取得をブロックされているまたは待機しているロックに関して、スレッドが現在所有しているロックに関してなど)を取得できます。
ThreadMXBean
インタフェースは、実行中のアプリケーションのデッドロックを見つけるためのfindMonitorDeadlockedThreads()
メソッドおよびfindDeadlockedThreads()
メソッドを提供します。
- 導入されたバージョン:
- 1.5
- 関連項目:
-
メソッドのサマリー
修飾子と型メソッド説明dumpAllThreads
(boolean lockedMonitors, boolean lockedSynchronizers) スタック・トレースおよび同期情報を持つすべてのライブ・スレッドのスレッド情報を返します。default ThreadInfo[]
dumpAllThreads
(boolean lockedMonitors, boolean lockedSynchronizers, int maxDepth) 指定された最大数の要素と同期情報のスタック・トレースを持つすべてのライブ・スレッドのスレッド情報を返します。long[]
オブジェクト・モニターまたは所有可能なシンクロナイザの取得を待機していてデッドロック状態にあるスレッドのサイクルを検索します。long[]
オブジェクト・モニターの取得を待機していてデッドロック状態にあるスレッドのサイクルを検索します。long[]
すべてのライブ・スレッドのIDを返します。long
現在のスレッドの合計CPU時間をナノ秒単位で返します。long
現在のスレッドがユーザー・モードで実行したCPU時間(ナノ秒単位)を返します。int
ライブ・デーモン・スレッドの現在の数を返します。int
Java仮想マシンが起動された以降の、またはピークがリセットされた以降の、ピーク・ライブ・スレッド・カウントを返します。int
デーモン・スレッドとデーモン以外のスレッドを含むライブ・スレッドの現在の数を返します。long
getThreadCpuTime
(long id) 指定されたIDのスレッドの合計CPU時間(ナノ秒単位)を返します。getThreadInfo
(long id) スタック・トレースを持たない指定されたid
のスレッドのスレッド情報を返します。getThreadInfo
(long[] ids) スタック・トレースを持たない入力配列ids
にあるIDを持つスレッドごとのスレッド情報を返します。getThreadInfo
(long[] ids, boolean lockedMonitors, boolean lockedSynchronizers) スタック・トレースおよび同期情報を持つ入力配列ids
にあるIDを持つスレッドごとのスレッド情報を返します。default ThreadInfo[]
getThreadInfo
(long[] ids, boolean lockedMonitors, boolean lockedSynchronizers, int maxDepth) IDが入力配列ids
にある各スレッドのスレッド情報を返します。指定された最大数の要素と同期情報のスタック・トレースが返されます。getThreadInfo
(long[] ids, int maxDepth) 指定された数のスタック・トレース要素から成るスタック・トレースを持つ、入力配列ids
にあるIDを持つスレッドごとのスレッド情報を返します。getThreadInfo
(long id, int maxDepth) 指定された数のスタック・トレース要素から成るスタック・トレースを持つ、指定されたid
のスレッドのスレッド情報を返します。long
getThreadUserTime
(long id) 指定されたIDのスレッドがユーザー・モードで実行したCPU時間(ナノ秒単位)を返します。long
Java仮想マシンが起動してから作成および起動されたスレッドの合計数を返します。boolean
Java仮想マシンが現在のスレッドのCPU時間測定をサポートするかどうかをテストします。boolean
Java仮想マシンがオブジェクト・モニターの使用量の監視をサポートするかどうかをテストします。boolean
Java仮想マシンが所有可能なシンクロナイザの使用量の監視をサポートするかどうかをテストします。boolean
スレッド・コンテンション監視が有効かどうかをテストします。boolean
Java仮想マシンがスレッド・コンテンション監視をサポートするかどうかをテストします。boolean
スレッドのCPU時間測定が有効かどうかをテストします。boolean
Java仮想マシンの実装が任意のスレッドのCPU時間測定をサポートするかどうかをテストします。void
ピーク・スレッド・カウントをライブ・スレッドの現在の数にリセットします。void
setThreadContentionMonitoringEnabled
(boolean enable) スレッド・コンテンション監視を有効または無効にします。void
setThreadCpuTimeEnabled
(boolean enable) スレッドのCPU時間測定を有効または無効にします。インタフェース java.lang.management.PlatformManagedObjectで宣言されたメソッド
getObjectName
-
メソッドの詳細
-
getThreadCount
int getThreadCount()デーモン・スレッドとデーモン以外のスレッドを含むライブ・スレッドの現在の数を返します。- 戻り値:
- ライブ・スレッドの現在の数
-
getPeakThreadCount
int getPeakThreadCount()Java仮想マシンが起動された以降の、またはピークがリセットされた以降の、ピーク・ライブ・スレッド・カウントを返します。- 戻り値:
- ピーク・ライブ・スレッド・カウント
-
getTotalStartedThreadCount
long getTotalStartedThreadCount()Java仮想マシンが起動してから作成および起動されたスレッドの合計数を返します。- 戻り値:
- 起動されたスレッドの合計数
-
getDaemonThreadCount
int getDaemonThreadCount()ライブ・デーモン・スレッドの現在の数を返します。- 戻り値:
- ライブ・デーモン・スレッドの現在の数
-
getAllThreadIds
long[] getAllThreadIds()すべてのライブ・スレッドのIDを返します。 返された配列に含まれる一部のスレッドは、このメソッドが値を返したときに終了していた可能性があります。- 戻り値:
- スレッドIDを含む
long
型の配列。 - 例外:
SecurityException
- セキュリティ・マネージャが存在する場合で、呼出し元がManagementPermission("monitor")を持たない場合。
-
getThreadInfo
ThreadInfo getThreadInfo(long id) スタック・トレースを持たない指定されたid
のスレッドのスレッド情報を返します。 このメソッドは、次を呼び出すのと同等です。getThreadInfo(id, 0);
このメソッドは、指定されたIDのスレッドに関するスレッド情報を表す
ThreadInfo
オブジェクトを返します。 返されたThreadInfo
オブジェクトのスタック・トレース、ロックされたモニター、およびロックされたシンクロナイザは、空になります。 指定されたIDのスレッドが生存していないか、存在していない場合、このメソッドはnull
を返します。 スレッドが起動され、生存している場合、スレッドは生存しています。MBeanServerアクセス:
ThreadInfo
のマップ型は、ThreadInfo.from
メソッドで指定された属性を含むCompositeData
です。- パラメータ:
id
- スレッドのスレッドID。 正の値でなければならない- 戻り値:
- スタック・トレース、ロックされたモニター、およびシンクロナイザ情報を持たない、指定されたIDのスレッドに関する
ThreadInfo
オブジェクト。指定されたIDのスレッドが生存または存在していない場合はnull
。 - 例外:
IllegalArgumentException
-id <= 0
の場合。SecurityException
- セキュリティ・マネージャが存在する場合で、呼出し元がManagementPermission("monitor")を持たない場合。
-
getThreadInfo
ThreadInfo[] getThreadInfo(long[] ids) スタック・トレースを持たない入力配列ids
にあるIDを持つスレッドごとのスレッド情報を返します。 このメソッドは、次を呼び出すのと同等です。getThreadInfo
(ids, 0);このメソッドは、
ThreadInfo
オブジェクトの配列を返します。 各ThreadInfo
オブジェクトのスタック・トレース、ロックされたモニター、およびロックされたシンクロナイザは、空になります。 指定されたIDのスレッドが生存していないか、存在していない場合、返された配列の対応する要素は、null
を含みます。 スレッドが起動され、生存している場合、スレッドは生存しています。MBeanServerアクセス:
ThreadInfo
のマップ型は、ThreadInfo.from
メソッドで指定された属性を含むCompositeData
です。- パラメータ:
ids
- スレッドIDの配列。- 戻り値:
- スタック・トレース、ロックされたモニター、およびシンクロナイザ情報を持たないIDの入力配列の対応する要素にIDがあるスレッドの情報を含む
ThreadInfo
オブジェクトの配列。 - 例外:
IllegalArgumentException
- 入力配列ids
内の任意の要素が<= 0
の場合。SecurityException
- セキュリティ・マネージャが存在する場合で、呼出し元がManagementPermission("monitor")を持たない場合。
-
getThreadInfo
ThreadInfo getThreadInfo(long id, int maxDepth) 指定された数のスタック・トレース要素から成るスタック・トレースを持つ、指定されたid
のスレッドのスレッド情報を返します。maxDepth
パラメータは、スタック・トレースから取得されるStackTraceElement
の最大数を示します。maxDepth == Integer.MAX_VALUE
の場合、スレッドのスタック・トレース全体がダンプされます。maxDepth == 0
の場合、スレッドのスタック・トレースはダンプされません。 このメソッドは、スレッドのロックされたモニターおよびロックされたシンクロナイザを取得しません。Java仮想マシンがスレッドのスタック・トレース情報を持たない場合、または
maxDepth == 0
の場合、ThreadInfo
オブジェクトのスタック・トレースはStackTraceElement
の空の配列になります。指定されたIDのスレッドが生存していないか、存在していない場合、このメソッドは
null
を返します。 スレッドが起動され、生存している場合、スレッドは生存しています。MBeanServerアクセス:
ThreadInfo
のマップ型は、ThreadInfo.from
メソッドで指定された属性を含むCompositeData
です。- パラメータ:
id
- スレッドのスレッドID。 正の値でなければならないmaxDepth
- ダンプされるスタック・トレースのエントリの最大数。Integer.MAX_VALUE
を使って、スタック全体をダンプするよう要求できる。- 戻り値:
- ロックされたモニターおよびシンクロナイザ情報を持たない、指定されたIDのスレッドに関する
ThreadInfo
。指定されたIDのスレッドが生存または存在していない場合はnull
。 - 例外:
IllegalArgumentException
-id <= 0
の場合。IllegalArgumentException
-maxDepth
が負の場合。SecurityException
- セキュリティ・マネージャが存在する場合で、呼出し元がManagementPermission("monitor")を持たない場合。
-
getThreadInfo
ThreadInfo[] getThreadInfo(long[] ids, int maxDepth) 指定された数のスタック・トレース要素から成るスタック・トレースを持つ、入力配列ids
にあるIDを持つスレッドごとのスレッド情報を返します。maxDepth
パラメータは、スタック・トレースから取得されるStackTraceElement
の最大数を示します。maxDepth == Integer.MAX_VALUE
の場合、スレッドのスタック・トレース全体がダンプされます。maxDepth == 0
の場合、スレッドのスタック・トレースはダンプされません。 このメソッドは、スレッドのロックされたモニターおよびロックされたシンクロナイザは取得しません。Java仮想マシンがスレッドのスタック・トレース情報を持たない場合、または
maxDepth == 0
の場合、ThreadInfo
オブジェクトのスタック・トレースはStackTraceElement
の空の配列になります。このメソッドは、
ThreadInfo
オブジェクトの配列を返します。配列の各要素は、ids
配列と同じインデックスを持つスレッドに関するスレッド情報です。 指定されたIDのスレッドが生存していないか、存在しない場合、返される配列の対応する要素にnull
が設定されます。 スレッドが起動され、生存している場合、スレッドは生存しています。MBeanServerアクセス:
ThreadInfo
のマップ型は、ThreadInfo.from
メソッドで指定された属性を含むCompositeData
です。- パラメータ:
ids
- スレッドIDの配列maxDepth
- ダンプされるスタック・トレースのエントリの最大数。Integer.MAX_VALUE
を使って、スタック全体をダンプするよう要求できる。- 戻り値:
- ロックされたモニターおよびシンクロナイザ情報を持たないIDの入力配列の対応する要素にIDがあるスレッドの情報を含む
ThreadInfo
オブジェクトの配列。 - 例外:
IllegalArgumentException
-maxDepth
が負の場合。IllegalArgumentException
- 入力配列ids
内の任意の要素が<= 0
の場合。SecurityException
- セキュリティ・マネージャが存在する場合で、呼出し元がManagementPermission("monitor")を持たない場合。
-
isThreadContentionMonitoringSupported
boolean isThreadContentionMonitoringSupported()Java仮想マシンがスレッド・コンテンション監視をサポートするかどうかをテストします。- 戻り値:
- Java仮想マシンがスレッド・コンテンション監視をサポートする場合は
true
、そうでない場合はfalse
。
-
isThreadContentionMonitoringEnabled
boolean isThreadContentionMonitoringEnabled()スレッド・コンテンション監視が有効かどうかをテストします。- 戻り値:
- スレッド・コンテンション監視が有効な場合は
true
、そうでない場合はfalse
。 - 例外:
UnsupportedOperationException
- Java仮想マシンがスレッド・コンテンション監視をサポートしない場合。- 関連項目:
-
setThreadContentionMonitoringEnabled
void setThreadContentionMonitoringEnabled(boolean enable) スレッド・コンテンション監視を有効または無効にします。 デフォルト時は、スレッドの競合のモニタリングが無効になっています。- パラメータ:
enable
- 有効にするにはtrue
、無効にするにはfalse
。- 例外:
UnsupportedOperationException
- Java仮想マシンがスレッド・コンテンション監視をサポートしない場合。SecurityException
- セキュリティ・マネージャが存在する場合で、呼出し元がManagementPermission("control")を持たない場合。- 関連項目:
-
getCurrentThreadCpuTime
long getCurrentThreadCpuTime()現在のスレッドの合計CPU時間をナノ秒単位で返します。 戻り値はナノ秒単位の精度ですが、必ずしもナノ秒の正確度ではありません。 実装がユーザー・モード時とシステム・モード時を区別する場合、返されるCPU時間は、ユーザー・モードまたはシステム・モードで現在のスレッドが実行した時間の合計です。ローカル管理用の便利なメソッドであり、次のようにコールすることに相当します:
getThreadCpuTime
(Thread.currentThread().getId());- 戻り値:
- CPU時間測定が有効な場合は、現在のスレッドの合計CPU時間、そうでない場合は
-1
。 - 例外:
UnsupportedOperationException
- Java仮想マシンが現在のスレッドのCPU時間測定をサポートしない場合。- 関連項目:
-
getCurrentThreadUserTime
long getCurrentThreadUserTime()現在のスレッドがユーザー・モードで実行したCPU時間(ナノ秒単位)を返します。 戻り値はナノ秒単位の精度ですが、必ずしもナノ秒の正確度ではありません。ローカル管理用の便利なメソッドであり、次のようにコールすることに相当します:
getThreadUserTime
(Thread.currentThread().getId());- 戻り値:
- CPU時間測定が有効な場合は、現在のスレッドのユーザー・レベルCPU時間、そうでない場合は
-1
。 - 例外:
UnsupportedOperationException
- Java仮想マシンが現在のスレッドのCPU時間測定をサポートしない場合。- 関連項目:
-
getThreadCpuTime
long getThreadCpuTime(long id) 指定されたIDのスレッドの合計CPU時間(ナノ秒単位)を返します。 戻り値はナノ秒単位の精度ですが、必ずしもナノ秒の正確度ではありません。 実装がユーザー・モード時とシステム・モード時を区別する場合、返されるCPU時間は、ユーザー・モードまたはシステム・モードでそのスレッドが実行した時間の合計です。指定されたIDのスレッドが生存していないか、存在していない場合、このメソッドは
-1
を返します。 CPU時間測定が無効の場合、このメソッドは-1
を返します。 スレッドが起動され、生存している場合、スレッドは生存しています。スレッドが起動されたあとにCPU時間測定が有効になった場合、Java仮想マシンの実装では、CPU時間測定が起動されたポイントとしてCPU時間測定機能が有効になった時間以前の任意の時間を選択できます。
- パラメータ:
id
- スレッドのスレッドID- 戻り値:
- 指定されたIDのスレッドが存在し、生存していて、CPU時間測定が有効な場合は、指定されたIDのスレッドの合計CPU時間、そうでない場合は
-1
。 - 例外:
IllegalArgumentException
-id <= 0
の場合。UnsupportedOperationException
- Java仮想マシンがほかのスレッドのCPU時間測定をサポートしない場合。- 関連項目:
-
getThreadUserTime
long getThreadUserTime(long id) 指定されたIDのスレッドがユーザー・モードで実行したCPU時間(ナノ秒単位)を返します。 戻り値はナノ秒単位の精度ですが、必ずしもナノ秒の正確度ではありません。指定されたIDのスレッドが生存していないか、存在していない場合、このメソッドは
-1
を返します。 CPU時間測定が無効の場合、このメソッドは-1
を返します。 スレッドが起動され、生存している場合、スレッドは生存しています。スレッドが起動されたあとにCPU時間測定が有効になった場合、Java仮想マシンの実装では、CPU時間測定が起動されたポイントとしてCPU時間測定機能が有効になった時間以前の任意の時間を選択できます。
- パラメータ:
id
- スレッドのスレッドID- 戻り値:
- 指定されたIDのスレッドが存在し、生存していて、CPU時間測定が有効な場合は、指定されたIDのスレッドのユーザー・レベルCPU時間、そうでない場合は
-1
。 - 例外:
IllegalArgumentException
-id <= 0
の場合。UnsupportedOperationException
- Java仮想マシンがほかのスレッドのCPU時間測定をサポートしない場合。- 関連項目:
-
isThreadCpuTimeSupported
boolean isThreadCpuTimeSupported()Java仮想マシンの実装が任意のスレッドのCPU時間測定をサポートするかどうかをテストします。 任意のスレッドのCPU時間測定をサポートするJava仮想マシンの実装は現在のスレッドのCPU時間測定もサポートします。- 戻り値:
- Java仮想マシンが任意のスレッドのCPU時間測定をサポートする場合は
true
、そうでない場合はfalse
。
-
isCurrentThreadCpuTimeSupported
boolean isCurrentThreadCpuTimeSupported()Java仮想マシンが現在のスレッドのCPU時間測定をサポートするかどうかをテストします。isThreadCpuTimeSupported()
がtrue
を返す場合、このメソッドはtrue
を返します。- 戻り値:
- Java仮想マシンが現在のスレッドのCPU時間測定をサポートする場合は
true
、そうでない場合はfalse
。
-
isThreadCpuTimeEnabled
boolean isThreadCpuTimeEnabled()スレッドのCPU時間測定が有効かどうかをテストします。- 戻り値:
- スレッドのCPU時間測定が有効な場合は
true
、そうでない場合はfalse
。 - 例外:
UnsupportedOperationException
- Java仮想マシンがほかのスレッドばかりでなく現在のスレッドのCPU時間測定もサポートしない場合。- 関連項目:
-
setThreadCpuTimeEnabled
void setThreadCpuTimeEnabled(boolean enable) スレッドのCPU時間測定を有効または無効にします。 デフォルトはプラットフォームに依存します。- パラメータ:
enable
- 有効にするにはtrue
、無効にするにはfalse
。- 例外:
UnsupportedOperationException
- Java仮想マシンが任意のスレッドばかりでなく現在のスレッドのCPU時間測定もサポートしない場合。SecurityException
- セキュリティ・マネージャが存在する場合で、呼出し元がManagementPermission("control")を持たない場合。- 関連項目:
-
findMonitorDeadlockedThreads
long[] findMonitorDeadlockedThreads()オブジェクト・モニターの取得を待機していてデッドロック状態にあるスレッドのサイクルを検索します。 つまり、スレッドはブロックされ、同期ブロックに入るのを待機しているか、Object.wait
呼出しのあと、同期ブロックに再入するのを待機しています。ここでは、サイクル中の別のスレッドにより保持されている別のモニターの取得を試行している間、各スレッドは1つのモニターを保有しています。公式には、スレッドが、「ほかのスレッドにより保有されるオブジェクト・モニターを待機している」関係にあるサイクルの一部である場合、スレッドはモニター・デッドロックされます。 もっとも簡単なケースについて説明すると、スレッドAは、スレッドBが所有するモニターを待機するのをブロックされ、スレッドBはスレッドAが所有するモニターを待機するのをブロックされます。
このメソッドはトラブルシューティングのために設計されていますが、同期制御のためのものではありません。 このメソッドの操作は負荷が大きくなる可能性があります。
このメソッドは、オブジェクト・モニターに関するデッドロックだけを検索します。 オブジェクト・モニターと所有可能なシンクロナイザの両方に関するデッドロックを検索するには、
findDeadlockedThreads
メソッドを使用するようにしてください。- 戻り値:
- 存在する場合は、モニター・デッドロックされているスレッドのIDの配列、そうでない場合は
null
。 - 例外:
SecurityException
- セキュリティ・マネージャが存在する場合で、呼出し元がManagementPermission("monitor")を持たない場合。- 関連項目:
-
resetPeakThreadCount
void resetPeakThreadCount()ピーク・スレッド・カウントをライブ・スレッドの現在の数にリセットします。- 例外:
SecurityException
- セキュリティ・マネージャが存在する場合で、呼出し元がManagementPermission("control")を持たない場合。- 関連項目:
-
findDeadlockedThreads
long[] findDeadlockedThreads()オブジェクト・モニターまたは所有可能なシンクロナイザの取得を待機していてデッドロック状態にあるスレッドのサイクルを検索します。 これら2種類のロックを待機しているサイクル中に、各スレッドがロックを所有していて、このサイクルのほかのスレッドによってすでに保持されている別のロックを取得しようとすると、スレッドはデッドロック状態になります。このメソッドはトラブルシューティングのために設計されていますが、同期制御のためのものではありません。 このメソッドの操作は負荷が大きくなる可能性があります。
- 戻り値:
- オブジェクト・モニターまたは所有可能なシンクロナイザがある場合に、それらを待機していてデッドロックされているスレッドのIDの配列。そうでない場合は
null
。 - 例外:
SecurityException
- セキュリティ・マネージャが存在する場合で、呼出し元がManagementPermission("monitor")を持たない場合。UnsupportedOperationException
- Java仮想マシンが所有可能なシンクロナイザの使用量のモニタリングをサポートしない場合。- 導入されたバージョン:
- 1.6
- 関連項目:
-
isObjectMonitorUsageSupported
boolean isObjectMonitorUsageSupported()Java仮想マシンがオブジェクト・モニターの使用量の監視をサポートするかどうかをテストします。- 戻り値:
- Java仮想マシンがオブジェクト・モニターの使用量の監視をサポートしている場合は
true
、そうでない場合はfalse
。 - 導入されたバージョン:
- 1.6
- 関連項目:
-
isSynchronizerUsageSupported
boolean isSynchronizerUsageSupported()Java仮想マシンが所有可能なシンクロナイザの使用量の監視をサポートするかどうかをテストします。- 戻り値:
- Java仮想マシンが所有可能なシンクロナイザの使用量の監視をサポートしている場合は
true
、そうでない場合はfalse
。 - 導入されたバージョン:
- 1.6
- 関連項目:
-
getThreadInfo
ThreadInfo[] getThreadInfo(long[] ids, boolean lockedMonitors, boolean lockedSynchronizers) スタック・トレースおよび同期情報を持つ入力配列ids
にあるIDを持つスレッドごとのスレッド情報を返します。 これは、次を呼び出すのと同等です。getThreadInfo(ids, lockedMonitors, lockedSynchronizers, Integer.MAX_VALUE)
- パラメータ:
ids
- スレッドIDの配列。lockedMonitors
-true
の場合、ロックされたすべてのモニターを取得する。lockedSynchronizers
-true
の場合、ロックされたすべての所有可能なシンクロナイザを取得する。- 戻り値:
- IDの入力配列の対応する要素にIDがあるスレッドの情報を含む
ThreadInfo
オブジェクトの配列。 - 例外:
SecurityException
- セキュリティ・マネージャが存在する場合で、呼出し元がManagementPermission("monitor")を持たない場合。UnsupportedOperationException
-lockedMonitors
がtrue
であるが、Java仮想マシンがオブジェクト・モニターの使用量の監視をサポートしていない場合、またはlockedSynchronizers
がtrue
であるが、Java仮想マシンが所有可能なシンクロナイザの使用量の監視をサポートしていない場合。
- 導入されたバージョン:
- 1.6
- 関連項目:
-
getThreadInfo
default ThreadInfo[] getThreadInfo(long[] ids, boolean lockedMonitors, boolean lockedSynchronizers, int maxDepth) IDが入力配列ids
にある各スレッドのスレッド情報を返します。指定された最大数の要素と同期情報のスタック・トレースが返されます。maxDepth == 0
の場合、スレッドのスタック・トレースはダンプされません。このメソッドは、スレッドごとにスレッド情報のスナップショットを取得します。たとえば次のとおりです。
- 指定された最大数の要素のスタック・トレース、
lockedMonitors
がtrue
の場合はスレッドによって現在ロックされているオブジェクト・モニター、およびlockedSynchronizers
がtrue
の場合はスレッドによって現在ロックされている所有可能なシンクロナイザ。
このメソッドは、
ThreadInfo
オブジェクトの配列を返します。配列の各要素は、ids
配列と同じインデックスを持つスレッドに関するスレッド情報です。 指定されたIDのスレッドが生存していないか、存在しない場合、返される配列の対応する要素にnull
が設定されます。 スレッドが起動され、生存している場合、スレッドは生存しています。スレッドがオブジェクト・モニターをロックしていない場合、または
lockedMonitors
がfalse
の場合、返されるThreadInfo
オブジェクトは空のMonitorInfo
配列を持ちます。 同様に、スレッドがシンクロナイザをロックしていない場合、またはlockedSynchronizers
がfalse
の場合、返されるThreadInfo
オブジェクトは空のLockInfo
配列を持ちます。lockedMonitors
パラメータおよびlockedSynchronizers
パラメータの両方がfalse
の場合は、次を呼び出すことに相当します。getThreadInfo(ids, maxDepth)
このメソッドはトラブルシューティングのために設計されていますが、同期制御のためのものではありません。 このメソッドの操作は負荷が大きくなる可能性があります。
MBeanServerアクセス:
ThreadInfo
のマップ型は、ThreadInfo.from
メソッドで指定された属性を含むCompositeData
です。- 実装要件:
- デフォルト実装は
UnsupportedOperationException
をスローします。 - パラメータ:
ids
- スレッドIDの配列。lockedMonitors
-true
の場合、ロックされたすべてのモニターを取得する。lockedSynchronizers
-true
の場合、ロックされたすべての所有可能なシンクロナイザを取得する。maxDepth
- スタック・トレースから取得するStackTraceElement
の最大数を示します。- 戻り値:
- IDの入力配列の対応する要素にIDがあるスレッドの情報を含む
ThreadInfo
オブジェクトの配列。 - 例外:
IllegalArgumentException
-maxDepth
が負の場合。SecurityException
- セキュリティ・マネージャが存在する場合で、呼出し元がManagementPermission("monitor")を持たない場合。UnsupportedOperationException
-lockedMonitors
がtrue
であるが、Java仮想マシンがオブジェクト・モニターの使用量の監視をサポートしていない場合、またはlockedSynchronizers
がtrue
であるが、Java仮想マシンが所有可能なシンクロナイザの使用量の監視をサポートしていない場合。
- 導入されたバージョン:
- 10
- 関連項目:
-
dumpAllThreads
ThreadInfo[] dumpAllThreads(boolean lockedMonitors, boolean lockedSynchronizers) スタック・トレースおよび同期情報を持つすべてのライブ・スレッドのスレッド情報を返します。 これは、次を呼び出すのと同等です。dumpAllThreads(lockedMonitors, lockedSynchronizers, Integer.MAX_VALUE)
- パラメータ:
lockedMonitors
-true
の場合、ロックされたすべてのモニターをダンプする。lockedSynchronizers
-true
の場合、ロックされたすべての所有可能なシンクロナイザをダンプする。- 戻り値:
- すべてのライブ・スレッドの
ThreadInfo
の配列。 - 例外:
SecurityException
- セキュリティ・マネージャが存在する場合で、呼出し元がManagementPermission("monitor")を持たない場合。UnsupportedOperationException
-lockedMonitors
がtrue
であるが、Java仮想マシンがオブジェクト・モニターの使用量の監視をサポートしていない場合、またはlockedSynchronizers
がtrue
であるが、Java仮想マシンが所有可能なシンクロナイザの使用量の監視をサポートしていない場合。
- 導入されたバージョン:
- 1.6
- 関連項目:
-
dumpAllThreads
default ThreadInfo[] dumpAllThreads(boolean lockedMonitors, boolean lockedSynchronizers, int maxDepth) 指定された最大数の要素と同期情報のスタック・トレースを持つすべてのライブ・スレッドのスレッド情報を返します。maxDepth == 0
の場合、スレッドのスタック・トレースはダンプされません。 返された配列に含まれる一部のスレッドは、このメソッドが値を返したときに終了していた可能性があります。このメソッドは、
getThreadInfo(long[], boolean, boolean, int)
メソッドで指定されているThreadInfo
オブジェクトの配列を返します。- 実装要件:
- デフォルト実装は
UnsupportedOperationException
をスローします。 - パラメータ:
lockedMonitors
-true
の場合、ロックされたすべてのモニターをダンプする。lockedSynchronizers
-true
の場合、ロックされたすべての所有可能なシンクロナイザをダンプする。maxDepth
- スタック・トレースから取得するStackTraceElement
の最大数を示します。- 戻り値:
- すべてのライブ・スレッドの
ThreadInfo
の配列。 - 例外:
IllegalArgumentException
-maxDepth
が負の場合。SecurityException
- セキュリティ・マネージャが存在する場合で、呼出し元がManagementPermission("monitor")を持たない場合。UnsupportedOperationException
-lockedMonitors
がtrue
であるが、Java仮想マシンがオブジェクト・モニターの使用量の監視をサポートしていない場合、またはlockedSynchronizers
がtrue
であるが、Java仮想マシンが所有可能なシンクロナイザの使用量の監視をサポートしていない場合。
- 導入されたバージョン:
- 10
- 関連項目:
-