java

Java

OS에서 생성하기

OS에서 바로 생성하는경우 대부분 stdout 으로 출력되기 때문에 로그파일에 저장되거나 아니면 console 로 직접 출력이 된다. 따라서 콘솔출력을 redirection으로 로깅하고 있지 않은경우 저장이 불가능 할 수도 있다. 이점 참고하기 바란다.

  • 리눅스 : kill -3 [PID]
  • 윈도우 : Ctrl + Break

JVM에서 생성하기

  • jps -v 로 java 프로세스 확인
  • jstack [PID] (jstack으로 반응이 없는 경우 –F 옵션)
  • jcmd [PID] Thread.print (jdk7 이후 등장)
  • jcmd [PID] help 로 명령어 확인 가능, 직관적임
  • 이때 시간이 있다면 텀을 두고 3~4장을 떠두는게 좋다.

https://github.com/sparameswaran/threadlogic

  1. 과거 오라클 사이트에 있었으나 개편되면서 사라지고, 아래 개발자가 github에 기존 코드를 이동
  2. 전체적인 UI나 기능이 깔끔하고 직관적임
  3. 쓰레드덤프 load 시간이 비교적 오래걸림

https://www.ibm.com/support/pages/ibm-thread-and-monitor-dump-analyzer-java-tmda

  1. IBM에서 만든 analyzer로 유명한 편임
  2. 전체적인 UI 깔끔하고 속도도 빠른편
  3. 개인적으로 UX 가 좀 복잡한거 같음
  4. 대략 어떤 원인인지는 확인이 되나 쓰레드 간의 lock, block, wait 상태를 직관적으로 보여주지 않아서 직접 찾아야함
  1. 쓰레드 덤프 제대로 못불러오는 이슈도 있고 전체적으로 느림
  2. heap dump analyze 할때는 (느리지만) 괜찮은듯함

https://github.com/irockel/tda

  1. open source 라서 큰 기대를 안했는데 매우 추천
  2. UI는 투박하나 UX가 직관적임
  3. 특히 쓰레드간의 lock, block, waiting 상태를 직관적으로 보여줘서 직접 찾아다닐 필요가 없음
  4. 예를 들어, 특정 쓰레드가 어떤 monitor를 lock 하고 있고, 그 lock으로 인해 block, waiting 하는 쓰레드들을 모여서 보여줌
  5. 반대로, 어떤 쓰레드가 block, waiting 상태이면 어떤 lock과 monitor로 인해 해당 상태인지 연결해서 보여줌

https://gceasy.io/
https://fastthread.io/

  1. UI가 기똥차고 analyze를 기똥차게 해줌
  2. 하지만, IBM TMDA 처럼 쓰레드 간의 연결고리를 찾는게 쉽지 않음
  3. 웹사이트에 파일을 upload 해야하기 때문에 찝찝함
로그인하면 댓글을 남길 수 있습니다.
  • java.txt
  • 마지막으로 수정됨: 2024/02/12 09:32
  • 저자 koov