インタフェースThreadMXBean
- すべてのスーパー・インタフェース:
PlatformManagedObject
- 既知のすべてのサブインタフェース:
ThreadMXBean
ThreadMXBeanは、Java仮想マシンでの「プラットフォーム・スレッド」のモニタリングおよび管理をサポートします。 プラットフォーム・スレッドは通常、オペレーティング・システムによってスケジュールされたカーネル・スレッドにマップされます。 ThreadMXBeanは、「仮想スレッド」のモニタリングまたは管理をサポートしていません。
Java仮想マシンは、このインタフェースの実装クラスの単一インスタンスを持ちます。 このインタフェースを実装するこのインスタンスは、ManagementFactory.getThreadMXBean()メソッドをコールするか、platform MBeanServerメソッドから取得できるMXBeanです。
MBeanServer内のスレッド・システムのMXBeanを一意に識別するためのObjectNameは、次のとおりです:
java.lang:type=Threading
これを取得するには、PlatformManagedObject.getObjectName()メソッドを呼び出します。
スレッドID
スレッドIDは、スレッドthreadId()メソッドをコールして戻される正のlong値です。 スレッドIDは一意であり、その寿命を通じて変更されることはありません。 スレッドが終了すると、そのスレッドIDが再使用される可能性があります。
このインタフェースの一部のメソッドは、入力パラメータとしてスレッドIDまたはスレッドIDの配列を取得してスレッドごとの情報を返します。
スレッドCPU時間
Java仮想マシン実装では、現在のプラットフォーム・スレッド、プラットフォーム・スレッド、スレッドなしのCPU時間の測定をサポートできます。
isThreadCpuTimeSupported()メソッドを使用すると、Java仮想マシンが任意のプラットフォーム・スレッドのCPU時間の測定をサポートするかどうかを判断できます。 isCurrentThreadCpuTimeSupported()メソッドを使用すると、Java仮想マシンがプラットフォーム・スレッドのgetCurrentThreadCpuTime()およびgetCurrentThreadUserTime()メソッドで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[]すべてのライブ・プラットフォーム・スレッドのthreadIDsを返します。long現在のスレッドの合計CPU時間をナノ秒単位で返します。long現在のスレッドがユーザー・モードで実行したCPU時間(ナノ秒単位)を返します。intデーモン・スレッドであるライブ・プラットフォーム・スレッドの現在の数を返します。intJava仮想マシンが起動したかピークがリセットされた後のライブ・プラットフォーム・スレッドのピーク数を返します。intデーモンと非デーモン・スレッドの両方を含むライブ・プラットフォーム・スレッドの現在の数を返します。longgetThreadCpuTime(long id) 指定されたIDのスレッドの合計CPU時間(ナノ秒単位)を返します。getThreadInfo(long id) 指定されたidのスレッドのスレッド情報をスタック・トレースなしで返します。getThreadInfo(long[] ids) スタック・トレースのない入力配列idsにIDがある各スレッドのスレッド情報を返します。getThreadInfo(long[] ids, boolean lockedMonitors, boolean lockedSynchronizers) IDが入力配列idsにある各スレッドのスレッド情報を、スタック・トレースおよび同期情報とともに返します。default ThreadInfo[]getThreadInfo(long[] ids, boolean lockedMonitors, boolean lockedSynchronizers, int maxDepth) IDが入力配列idsにある各スレッドのスレッド情報を返します。指定された最大数の要素と同期情報のスタック・トレースが返されます。getThreadInfo(long[] ids, int maxDepth) IDが入力配列ids内にある各スレッドのスレッド情報を、指定した数のスタック・トレース要素のスタック・トレースとともに返します。getThreadInfo(long id, int maxDepth) 指定されたidのスレッドのスレッド情報を、指定した数のスタック・トレース要素のスタック・トレースとともに返します。longgetThreadUserTime(long id) 指定されたIDのスレッドがユーザー・モードで実行したCPU時間(ナノ秒単位)を返します。longJava仮想マシンの起動後に作成および起動されたプラットフォーム・スレッドの合計数を返します。booleangetCurrentThreadCpuTime()およびgetCurrentThreadUserTime()メソッドを使用して、Java仮想マシンがプラットフォーム・スレッドからのCPU時間測定をサポートするかどうかをテストします。booleanJava仮想マシンがオブジェクト・モニターの使用量の監視をサポートするかどうかをテストします。booleanJava仮想マシンが所有可能なシンクロナイザの使用量の監視をサポートするかどうかをテストします。booleanスレッド・コンテンション監視が有効かどうかをテストします。booleanJava仮想マシンがスレッド・コンテンション監視をサポートするかどうかをテストします。booleanスレッドのCPU時間測定が有効かどうかをテストします。booleanJava仮想マシン実装がプラットフォーム・スレッドのCPU時間測定をサポートしているかどうかをテストします。voidピーク・スレッド数を現在のライブ・プラットフォーム・スレッド数にリセットします。voidsetThreadContentionMonitoringEnabled(boolean enable) スレッド・コンテンション監視を有効または無効にします。voidsetThreadCpuTimeEnabled(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()すべてのライブ・プラットフォーム・スレッドのthreadIDsを返します。 仮想スレッドのスレッドIDは含まれません。 返された配列に含まれる一部のスレッドは、このメソッドが値を返したときに終了していた可能性があります。- 戻り値:
longの配列で、それぞれがスレッドIDです。
-
getThreadInfo
ThreadInfo getThreadInfo(long id) 指定されたidのスレッドのスレッド情報をスタック・トレースなしで返します。 このメソッドは、次を呼び出すのと同等です。getThreadInfo(id, 0);このメソッドは、指定されたIDのスレッドのスレッド情報を表す
ThreadInfoオブジェクトを返します。 返されたThreadInfoオブジェクトのスタック・トレース、ロックされたモニターおよびロックされたシンクロナイザは空になります。 指定されたIDのスレッドが仮想スレッドであるか、動作していないか、存在しない場合、このメソッドはnullを返します。 スレッドが開始され、まだ終了していない場合、スレッドは存続しています。MBeanServerアクセス:
ThreadInfoのマップされたタイプは、ThreadInfo.fromメソッドで指定された属性を持つCompositeDataです。- パラメータ:
id- スレッドのスレッドID。 正の値でなければならない- 戻り値:
- 指定されたIDのスレッドに対する
ThreadInfoオブジェクト(スタック・トレースなし、ロックされたモニターなし、シンクロナイザ情報なし)。null(指定されたIDのスレッドが仮想スレッドである場合、または存在しない場合)。 - スロー:
IllegalArgumentException-id <= 0の場合。
-
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の場合。
-
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。nullは、指定されたIDのスレッドが仮想スレッドであるか、存在していない場合です。 - スロー:
IllegalArgumentException-id <= 0の場合。IllegalArgumentException-maxDepth is negativeの場合。
-
getThreadInfo
ThreadInfo[] getThreadInfo(long[] ids, int maxDepth) IDが入力配列ids内にある各スレッドのスレッド情報を、指定した数のスタック・トレース要素のスタック・トレースとともに返します。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 is negativeの場合。IllegalArgumentException- 入力配列idsの要素が<= 0の場合。
-
isThreadContentionMonitoringSupported
boolean isThreadContentionMonitoringSupported()Java仮想マシンがスレッド・コンテンション監視をサポートするかどうかをテストします。- 戻り値:
- Java仮想マシンがスレッド競合のモニタリングをサポートしている場合は
true、サポートされていない場合はfalse。
-
isThreadContentionMonitoringEnabled
boolean isThreadContentionMonitoringEnabled()スレッド・コンテンション監視が有効かどうかをテストします。- 戻り値:
- スレッド競合モニタリングが有効な場合は
true、それ以外の場合はfalse。 - スロー:
UnsupportedOperationException- Java仮想マシンがスレッド・コンテンション監視をサポートしない場合。- 関連項目:
-
setThreadContentionMonitoringEnabled
void setThreadContentionMonitoringEnabled(boolean enable) スレッド・コンテンション監視を有効または無効にします。 デフォルト時は、スレッドの競合のモニタリングが無効になっています。- パラメータ:
enable- 有効にするにはtrue、無効にするにはfalse。- スロー:
UnsupportedOperationException- Java仮想マシンがスレッド・コンテンション監視をサポートしない場合。- 関連項目:
-
getCurrentThreadCpuTime
long getCurrentThreadCpuTime()現在のスレッドの合計CPU時間をナノ秒単位で返します。 戻り値はナノ秒単位の精度ですが、必ずしもナノ秒の正確度ではありません。 実装がユーザー・モード時とシステム・モード時を区別する場合、返されるCPU時間は、ユーザー・モードまたはシステム・モードで現在のスレッドが実行した時間の合計です。ローカル管理用の便利なメソッドであり、次のようにコールすることに相当します:
getThreadCpuTime(Thread.currentThread().threadId());- 戻り値:
- 現在のスレッドがプラットフォーム・スレッドの場合、およびCPU時間の測定が有効な場合は、現在のスレッドの合計CPU時間。それ以外の場合は
-1。 - スロー:
UnsupportedOperationException- Java仮想マシンが現在のスレッドのCPU時間測定をサポートしない場合。- 関連項目:
-
getCurrentThreadUserTime
long getCurrentThreadUserTime()現在のスレッドがユーザー・モードで実行したCPU時間(ナノ秒単位)を返します。 戻り値はナノ秒単位の精度ですが、必ずしもナノ秒の正確度ではありません。ローカル管理用の便利なメソッドであり、次のようにコールすることに相当します:
getThreadUserTime(Thread.currentThread().threadId());- 戻り値:
- 現在のスレッドがプラットフォーム・スレッドであり、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()getCurrentThreadCpuTime()およびgetCurrentThreadUserTime()メソッドを使用して、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時間測定もサポートしない場合。- 関連項目:
-
findMonitorDeadlockedThreads
long[] findMonitorDeadlockedThreads()オブジェクト・モニターの取得を待機しているデッドロック状態にあるプラットフォーム・スレッドのサイクルを検索します。 つまり、同期ブロックの入力を待機しているプラットフォーム・スレッド、またはObject.waitコール後に同期ブロックの再入力を待機しているプラットフォーム・スレッドです。各プラットフォーム・スレッドは1つのモニターを所有し、別のプラットフォーム・スレッドによってサイクル内にすでに保持されている別のモニターを取得しようとしています。 仮想スレッドを含むサイクルは、このメソッドでは見つかりません。公式には、スレッドが、「ほかのスレッドにより保有されるオブジェクト・モニターを待機している」関係にあるサイクルの一部である場合、スレッドはモニター・デッドロックされます。 もっとも簡単なケースについて説明すると、スレッドAは、スレッドBが所有するモニターを待機するのをブロックされ、スレッドBはスレッドAが所有するモニターを待機するのをブロックされます。
このメソッドはトラブルシューティングのために設計されていますが、同期制御のためのものではありません。 このメソッドの操作は負荷が大きくなる可能性があります。
このメソッドは、オブジェクト・モニターに関するデッドロックだけを検索します。 オブジェクト・モニターと所有可能なシンクロナイザの両方に関するデッドロックを検索するには、
findDeadlockedThreadsメソッドを使用するようにしてください。- 戻り値:
- デッドロックがモニターされるプラットフォーム・スレッドのIDの配列(存在する場合)。それ以外の場合は
null。 - 関連項目:
-
resetPeakThreadCount
void resetPeakThreadCount()ピーク・スレッド数を現在のライブ・プラットフォーム・スレッド数にリセットします。- 関連項目:
-
findDeadlockedThreads
long[] findDeadlockedThreads()オブジェクト・モニターまたは「独自のシンクロナイザ」の取得を待機しているデッドロック状態のプラットフォーム・スレッドのサイクルを検索します。 プラットフォーム・スレッドは、サイクル内の別のプラットフォーム・スレッドによってすでに保持されている別のロックを取得しようとして、各スレッドが1つのロックを所有している場合、これらの2つのタイプのロックを待機するサイクル内の「デッドロック」です。 仮想スレッドを含むサイクルは、このメソッドでは見つかりません。このメソッドはトラブルシューティングのために設計されていますが、同期制御のためのものではありません。 このメソッドの操作は負荷が大きくなる可能性があります。
- 戻り値:
- オブジェクト・モニターまたは所有可能なシンクロナイザ(ある場合)を待機しているデッドロックされたプラットフォーム・スレッドのIDの配列。それ以外の場合は
null。 - スロー:
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) IDが入力配列idsにある各スレッドのスレッド情報を、スタック・トレースおよび同期情報とともに返します。 これは、次を呼び出すのと同等です。getThreadInfo(ids, lockedMonitors, lockedSynchronizers, Integer.MAX_VALUE)- パラメータ:
ids- スレッドIDの配列。lockedMonitors-trueを指定すると、ロックされたすべてのモニターが取得されます。lockedSynchronizers-trueを指定すると、ロックされた所有可能なシンクロナイザがすべて取得されます。- 戻り値:
- IDの入力配列の対応する要素にIDがあるスレッドの情報を含む
ThreadInfoオブジェクトの配列。 - スロー:
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が負の場合。UnsupportedOperationException-lockedMonitorsがtrueで、Java仮想マシンが「オブジェクト・モニターの使用」のモニタリングをサポートしていない場合、またはlockedSynchronizersがtrueの場合、Java仮想マシンは「所有可能なシンクロナイザの使用」のモニタリングをサポートしていません。
- 導入されたバージョン:
- 10
- 関連項目:
-
dumpAllThreads
ThreadInfo[] dumpAllThreads(boolean lockedMonitors, boolean lockedSynchronizers) スタック・トレースおよび同期情報を含むすべてのライブ・プラットフォーム・スレッドのスレッド情報を返します。 仮想スレッドのスレッドIDは含まれません。 このメソッドは、次を呼び出すのと同等です。dumpAllThreads(lockedMonitors, lockedSynchronizers, Integer.MAX_VALUE)- パラメータ:
lockedMonitors-trueの場合、ロックされたすべてのモニターをダンプします。lockedSynchronizers-trueの場合、ロックされたすべての所有可能なシンクロナイザをダンプします。- 戻り値:
- すべてのライブ・プラットフォーム・スレッドの
ThreadInfo配列。 - スロー:
UnsupportedOperationException-lockedMonitorsがtrueで、Java仮想マシンが「オブジェクト・モニターの使用」のモニタリングをサポートしていない場合、またはlockedSynchronizersがtrueの場合、Java仮想マシンは「所有可能なシンクロナイザの使用」のモニタリングをサポートしていません。
- 導入されたバージョン:
- 1.6
- 関連項目:
-
dumpAllThreads
default ThreadInfo[] dumpAllThreads(boolean lockedMonitors, boolean lockedSynchronizers, int maxDepth) 指定された最大要素数および同期情報のスタック・トレースを含むすべてのライブ・プラットフォーム・スレッドのスレッド情報を返します。maxDepth == 0の場合、スレッドのスタック・トレースはダンプされません。 仮想スレッドのスレッドIDは含まれません。 返された配列に含まれる一部のスレッドは、このメソッドが値を返したときに終了していた可能性があります。このメソッドは、
getThreadInfo(long[], boolean, boolean, int)メソッドで指定されているThreadInfoオブジェクトの配列を返します。- 実装要件:
- デフォルト実装は
UnsupportedOperationExceptionをスローします。 - パラメータ:
lockedMonitors-trueの場合、ロックされたすべてのモニターをダンプします。lockedSynchronizers-trueの場合、ロックされたすべての所有可能なシンクロナイザをダンプします。maxDepth- スタック・トレースから取得するStackTraceElementの最大数を示します。- 戻り値:
- すべてのライブ・プラットフォーム・スレッドの
ThreadInfo配列。 - スロー:
IllegalArgumentException-maxDepthが負の場合。UnsupportedOperationException-lockedMonitorsがtrueで、Java仮想マシンが「オブジェクト・モニターの使用」のモニタリングをサポートしていない場合、またはlockedSynchronizersがtrueの場合、Java仮想マシンは「所有可能なシンクロナイザの使用」のモニタリングをサポートしていません。
- 導入されたバージョン:
- 10
- 関連項目:
-