본문 바로가기
728x90
반응형

Java & Kotlin12

Java 에서의 동시성 관리 방법 Synchronized키워드를 메서드나 블록에 적용해 해당 코드 블록에 접근할 때 하나의 스레드만 접근할 수 있도록 보장락을 잡고 있는 동안 다른 스레드들은 해당 자원을 사용하지 못하기 때문에 경합이 발생하여 성능 저하가 일어날 수 있음락을 과도하게 사용하면 데드락 문제도 발생할 수 있음ReentrantLockLock 인터페이스를 구현한 클래스. 락을 명시적으로 관리할 수 있게 함락을 획득할 때 타임아웃 설정이나 중단할 수 있는 기능을 제공함synchronized보다 여러 조건을 처리하는데에 유리락을 획득하는데 실패할 경우 재시도를 하거나 특정 시간내에 락을 획득하지 못하면 다른 처리를 할 수 있음Lock lock = new ReentrantLock();lock.lock();try { // 작업 수.. 2025. 1. 27.
JVM 구성 요소클래스 로더 서브 시스템(Class Loader Subsystem)자바 .class 파일을 읽어 JVM 메모리 적재역할로딩: .class 파일 로드링크: 클래스간 종속성 해결초기화: 정적 필드와 정적 블록을 실행하여 초기화런타임 데이터 영역 (Runtime Data Areas)Method Area클래스의 메타데이터, 정적 변수, 상수 풀(Constant Pool) 저장모든 스레드가 공유Heap객체와 배열이 저장되는 공간모든 스레드가 공유하며 Garbage Colletor가 관리Stack각 스레드마다 별도로 생성되는 영역으로 메서드 호출과 관련된 로컬 변수, 매개 변수, 연산 중간 결과 저장LIFO(Last In First Out) 구조PC Register각 스레드마다 생성되며 현재 실행중인 명령.. 2025. 1. 26.
Garbage Collection JVM에서 자동으로 메모리를 관리하여 더이상 사용되지 않는 객체를 제거하고 메모리를 회수하는 매커니즘개발자가 명시적으로 메모리를 해제하지 않아도되므로 메모리 누수를 방지하고 안정성을 높임동작 원리Stop-The-WorldGC를 실행하기 위해 JVM이 애플리케이션 실행을 멈추는 것GC를 실행하는 쓰레드를 제외한 나머지 쓰레드는 모두 작업을 멈춤어떤 GC 알고리즘을 사용하더라도 발생하기 때문에 성능 향상을 위래 고려해야할 건 Stop-The-World를 발생시키지 않도록 하는게 아니라 시간을 최소화 시키는 것임Mark and SweepMark객체 그래프를 순회하여 참조되는 객체를 식별하고 표시참조되지 않는 객체는 가비지로 간주SweepMark 단계에서 참조되는 않은 객체를 제거하고 해당 메모리를 회수JVM .. 2025. 1. 26.
728x90
반응형