ява нити всегда находится в одном из следующих десяти государств:Java тема: интерпретируя нить состояния работают JVM
NEW: Just starting up, i.e., in process of being initialized.
NEW_TRANS: Corresponding transition state (not used, included for completness).
IN_NATIVE: Running in native code.
IN_NATIVE_TRANS: Corresponding transition state.
IN_VM: Running in VM.
IN_VM_TRANS: Corresponding transition state.
IN_JAVA: Running in Java or in stub code.
IN_JAVA_TRANS: Corresponding transition state (not used, included for completness).
BLOCKED: Blocked in vm.
BLOCKED_TRANS: Corresponding transition state.
Неиспользованное состояние (UNINITIALIZED
) было исключено из списка.
Хотя определения состояний приведены выше, я ищу «правило большого пальца» для интерпретации заданной настройки состояния потока для работающего сервера приложений. И, более конкретно:
Предположим живой сервер приложений со следующими статистики резьбы (полученный с использованием jstack) в различные моменты времени:
- 100 потоков: 35
BLOCKED
, 65IN_NATIVE
- 113 темы: 35
BLOCKED
, 77IN_NATIVE
, 1IN_VM
- 52 нитей: 38
BLOCKED
, 1IN_JAVA
, 6IN_NATIVE
, 7IN_VM
- 120 нитей: 39
BLOCKED
, 1IN_JAVA
, 80IN_NATIVE
- 94 резьбы: 34
BLOCKED
, 59IN_NATIVE
, 1IN_NATIVE_TRANS
Для каждого потока из пяти статистики - то, что может быть выведено в отношении к общее состояние JVM? I.e. «в этом сценарии JVM выглядит бездействующим ожиданием запросов», «машина занята обработкой запросов» и т. д.
привет, где вы находите приведенное выше описание состояний нитей? – StrikeW
Состояние потоков и их описания можно найти в классе JavaThreadState [HotSpot JVM] (http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b27/sun/jvm /hotspot/runtime/JavaThreadState.java). – kernelthree