Java 3

리눅스 진단 명령어

리눅스 진단 명령어개발을 하다 보면 OS 상황을 모니터 해야 할 경우도 있다. 시스템 장애가 애플리케이션에만 있는 것이 아니기 때문이다. 리눅스 진단에 사용할 수 있는 명령어를 알아보고 OS 상황을 모니터링할 때 활용해 보자. 위에는 Brendan Gregg의 블로그에서 가져온 리눅스 분석 도구 표이다. 중요한 분석 도구부터 차례대로 알아보도록 하겠다.CPU 모니터링CPU를 모니터링할 때 mpstat을 사용한다. mpstat이란 사용 가능한 CPU 사용 상황을 제공한다. 데이터 출력 간격과 수행 횟수를 지정할 수 있다.mpstat 5 3명령어 [데이터 출력 간격] [데이터 수행 횟수] 순으로 지정해야 한다. 출력된 결과는 다음과 같다. 사진 속 결과 의미는 다음과 같다.%usr : 애플리케이션에서 수행되..

Java 2025.06.17

Java 메모리 진단

Java는 Garbage Collector(GC)가 알아서 사용하지 않는 객체를 메모리에서 제거한다. 그래서 메모리 릭 현상이 간간히 발생하고, 원인을 잡기 쉽지 않다. 메모리 릭이 발생하면 원인을 어떻게 찾아야 하는지 알아보겠다.Java 메모리 영역자바의 메모리 영역은 다음과 같다.PC 레지스터 : 스레드의 JVM인스트럭션 주소가 저장되어 있다. 스레드별 각각 보유한다.JVM 스택 : 지역 변수와 부분 결과를 저장한다. 메서드 호출 및 리턴 정보 보관된다. 스레드별 각각 보유한다.힙 : 인스턴스와 배열이 할당된다. GC에 의해 관리된다.메서드 영역 : 모든 JVM 스레드 공유하며, 클래스 구조 정보 저장한다.런타임 상수 풀 : 클래스 및 인터페이스에 대한 constant_pool 테이블을 실행 시 참고..

Java 2025.06.11

[자바 트러블 슈팅] 스레드 진단

Java 프로세스에서 스레드 단면을 분석하고 문제를 해결하는 방법을 알아보자.스레드에서 발생할 수 있는 문제스레드를 처리할 때 발생할 수 있는 문제는 다음과 같다. 1. 레이스 컨디션멀티 스레드 환경에서 ‘공유 데이터’에 아무런 록 처리를 하지 않을 경우 문제 발생여러 스레드에서 동시에 수정 시 공유 데이터 꼬여서 무한 대기 or 무한 루프 2. 데드록두 개 이상의 스레드에서 서로의 록이 풀리기 기다리는 상황4가지 조건이 필요[비선점, 상호배제, 점유와 대기, 순환 참조]예시) 스레드 A에서 Data1에 록을 건 상태에서 Data2에 접근하려 한다. 스레드 B에서 Data2에 록을 건 상태에서 Data1에 접근하려 한다. 3. 스타베이션스레드가 CPU로부터 일할 기회를 받지 못하는 경우 4. 라이브 록응..

Java 2025.05.26