11

Every ANR dump lists the states of all threads at the time of the ANR. I know what WAIT means but what do SUSPENDED and MONITOR mean?

Thanks in advance...

4

1 に答える 1

38

Dalvik スレッドの状態の概要:

  • 初期化中 - まだ実行されていません。
  • STARTING - まだ実行されていませんが、ほぼ完了しています。
  • ZOMBIE - 故人 (これは表示されません)。
  • RUNNING (a/k/a RUNNABLE) - スレッドはアクティブに実行されています。VM は、スタック ダンプを実行するためにすべてのスレッドを一時停止する必要があるため、通常、スタックをダンプしているスレッド以外のスレッドではこれが表示されません。
  • WAIT - スレッドは wait() を呼び出し、辛抱強く待機しています。
  • TIMED_WAIT - タイムアウト付きで wait() と呼ばれるスレッド。(Thread.sleep() は時限待機として実装されています。)
  • MONITOR - スレッドはモニター ロックでブロックされています。つまり、「同期」ブロックに入ろうとしてスタックしています。
  • NATIVE - スレッドはネイティブ コードで実行されています。VM は、スレッドが JNI 呼び出しを行わない限り、ネイティブ コードのスレッドを中断しません (その時点で、スレッドは RUNNING に移行し、すぐに SUSPENDED に移行します)。
  • VMWAIT - スレッドは、内部ミューテックスなどの VM リソースの取得をブロックされています。または、何かが行われるのを待っている可能性があります (たとえば、コンパイラと GC スレッド)。
  • SUSPENDED - スレッドは実行可能でしたが、中断されました。前述のように、スタック ダンパーは、スタックをトラバースする前にすべてのスレッドを一時停止することを好みます。そのため、通常、ビジー状態のスレッドはこのように表示されます。(以前のリリースでは、この状態は存在しませんでした。「一時停止」は「ゼロ以外の sCount で実行中」でした。)
于 2014-04-21T22:44:13.037 に答える