스레드 덤프를 이용하여 스레드 상태를 파악할 수 있다.
java에서는 monitor를 이용해 스레드를 동기화 하며, 모든 java 객체는 하나의 monitor를 가지고 있다.
monitor는 하나의 스레드만 소유할 수 있으며, 어떤 스레드가 소유한 monitor를 다른 스레드가 획득하려면 해당 monitor를 소유하고 있는 스레드가 monitor를 해제할 때까지 wait queue에서 대기해야 한다.
스레드 덤프 유형별 패턴
- deadlock
- 락을 획득하지 못하는 경우(blocked) : 한 스레드가 lock을 소유하고 있어 다른 스레드가 lock을 획득하지 못해 전체적인 성능이 느려짐
- 원격 서버로부터 메시지 수신을 받기 위해 대기 : 스레드가 계속 RUNNABLE 상태로 소켓을 읽기 위해 무한정 대기
- 스레드 리소스를 정리 못하는 경우 : 불필요한 스레드가 계속 늘어나고 스레드 리소스를 정상적으로 정리 못할 때
java에서는 monitor를 이용해 스레드를 동기화 하며, 모든 java 객체는 하나의 monitor를 가지고 있다.
monitor는 하나의 스레드만 소유할 수 있으며, 어떤 스레드가 소유한 monitor를 다른 스레드가 획득하려면 해당 monitor를 소유하고 있는 스레드가 monitor를 해제할 때까지 wait queue에서 대기해야 한다.
스레드 덤프 유형별 패턴
- deadlock
- 락을 획득하지 못하는 경우(blocked) : 한 스레드가 lock을 소유하고 있어 다른 스레드가 lock을 획득하지 못해 전체적인 성능이 느려짐
- 원격 서버로부터 메시지 수신을 받기 위해 대기 : 스레드가 계속 RUNNABLE 상태로 소켓을 읽기 위해 무한정 대기
- 스레드 리소스를 정리 못하는 경우 : 불필요한 스레드가 계속 늘어나고 스레드 리소스를 정상적으로 정리 못할 때
댓글
댓글 쓰기