반응형

2025/04 3

Blocking vs Non-Blocking, Synchronous vs Asynchronous

구분BlockingNon-BlockingSynchronousAsynchronous의미요청이 끝날 때까지 기다림요청하고 바로 제어권 반환호출자가 결과를 직접 기다림호출 후 결과는 콜백/이벤트로 전달됨예시파일 읽기 완료까지 멈춤읽을 게 없으면 즉시 리턴A → B → 결과 기다림 → 다음A → B 호출만 하고 → 다음 코드 실행대표 상황전통 IONIO일반 함수 호출Future, Callback, Reactor 위의 비교가 어렵다면 다음과 같이 비교해보도록 하자Blocking vs Non-Blocking은“작업이 끝날 때까지 기다릴 것이냐, 말 것이냐”의 차이→ "작업 진입 시점의 차이"Synchronous vs Asynchronous는“결과를 직접 받느냐, 나중에 받느냐”의 차이→ "작업 종료 시점의 처리 방..

JAVA 2025.04.21

JVM 메모리 구조

Method Area클래스 정보(메서드, 필드, static 변수 등)를 저장ClassLoader에 의해 로딩된 클래스들의 메타데이터가 올라간다.Java 8 이전에는 PermGen, 이후에는 Metaspace로 대체됨모든 thread가 함께 사용해당 영역 안에 Runtime Constant Pool이 존재Heap Area모든 객체 인스턴스(new)가 생성되는 영역GC의 주요 대상모든 thread가 함께 사용Stack Area메서드 호출 시 로컬 변수, 매개 변수, 리턴 주소 저장PC register현재 실행 중인 JVM 명령의 주소를 저장Native Method StackJVM이 아닌 Native code(C, C++ 등)를 실행할 때 사용하는 Stack public class Example { // M..

JAVA 2025.04.19

JVM GC(Garbage Collection)

C언어의 경우 malloc/free 를 통해서 프로그래머가 직접 메모리를 할당하고 해제해주지만 JVM의 경우에는 메모리를 알아서 관리해주고 있기 때문에 개발자가 직접 관리할 필요가 없어진다. JVM에 다양한 메모리 영역이 존재하는데 그 중에서도 Heap영역에서 다음과 같이 GC가 동작한다.Eden, Survivor, Old 영역들이 존재하는데 간단하게 객체가 생성(new Object()) 되면 Eden Space에 생겨난다.그러고 나서 아직 참조가 되고있는 객체 더이상 참조 되지 않는 객체를 분류한다. 위의 그림에서 Object2가 Mark되어지고 MinorGC에 의해서 메모리 할당이 해제된것으로 보면 된다.그렇게 생존한 객체들이 존재하는 Survivor영역을 왔다갔다 하면서 오래 살아남은 객체는 Old..

JAVA 2025.04.19
반응형