Java
-
[Java] Blocking/Non-blocking이란?Java 2025. 12. 1. 12:17
1. Blocking이란?Blocking은 프로세스(또는 쓰레드)의 상태 변화와 제어권의 흐름을 기준으로 정의됩니다.호출된 함수가 외부 작업 (쓰레드가 하는 작업이 아닌 db, 네트워크, I/O 등 외부 장치가 하는 작업)을 완료할 때까지 제어권(쓰레드를 사용하여 코드를 실행할 권한)을 반환하지 않는 것을 의미합니다. 이로 인해 호출한 쓰레드는 실행(Running) 상태에서 대기(Waiting) 상태로 전환되며, CPU 점유를 해제(Context Switch)하고 멈춰 서게 됩니다.핵심 동작 메커니즘Blocking I/O가 발생할 때 운영체제 내부에서는 다음 3단계 프로세스가 일어납니다.System Call:사용자 애플리케이션(Java)이 커널(OS)에게 "파일 읽어줘" 또는 "네트워크 패킷 줘"와 같은..
-
[Java] 프로세스(Process)와 스레드(Thread)Java 2025. 11. 27. 19:03
1. 프로세스(Process)와 스레드(Thread)의 차이이 둘을 구분하는 가장 확실한 기준은 '메모리의 공유 여부'입니다.1) 프로세스 (Process)정의: 운영체제로부터 자원을 할당받은 '실행 중인 프로그램'의 단위입니다.핵심 특징:운영체제로부터 독립된 메모리 공간(Code, Data, Heap, Stack)을 할당받습니다. 하나의 프로세스가 죽어도 다른 프로세스에 영향을 주지 않습니다 (독립성).운영체제에서는 CPU, 메모리 등 자원을 할당받아 독립적으로 실행되는 작업의 단위입니다.2) 스레드 (Thread)정의: 하나의 프로세스 안에서 여러 개의 실행 흐름을 만들기 위한 단위입니다.핵심 특징:공유 영역: Code, Data, Heap 영역을 모든 쓰레드가 공유합니다.독립 영역: 각 쓰레드는 자..
-
[Java] JVM의 Runtime Data AreaJava 2025. 11. 19. 17:38
이전글: JVM이 무엇이고 Java 코드는 어떻게 동작할까?1. Runtime Data Area란?Runtime Data Area는 JVM이 운영체제(OS) 위에서 실행될 때, OS로부터 할당받은 메모리 공간을 의미합니다. JVM이라는 프로세스가 자바 프로그램을 실행하기 위해 필요한 모든 데이터(클래스 메타데이터, 객체 인스턴스, 지역변수, 등)를 적재하고 관리하는 논리적인 메모리 영역을 의미합니다. 이 영역은 데이터의 라이프사이클과 가시성에 따라 크게 '모든 스레드 공유 영역(per-process)'과 '스레드별 격리 영역(Per-Thread)'으로 구분됩니다.구분영역 이름공유 여부 (Scope)핵심 저장 데이터 (Content)공유 영역(프로세스 단위)Method Area(메소드 영역)모든 스레드 공..
-
[Java] JVM이 무엇이고 Java 코드는 어떻게 동작할까?Java 2025. 11. 18. 20:39
1. JVM이란?JVM(Java Virtual Machine)은 자바 프로그램을 실행시켜주는 가상 머신 입니다.JVM의 핵심 철학은 "Write Once, Run Anywhere" 입니다. 한 번 작성하면 어디서든 동일하게 실행된다는 것을 의미합니다.어떻게 그렇게 되는지는 뒤에서 확인하겠습니다.2. JVM의 주요 기능JVM은 단순히 바이트 번역만 하는 것이 아니라 다음과 같은 중요한 일들을 자동으로 처리합니다.바이트 코드 실행: .class 파일을 읽어 들여(로드) 메모리에 적재하고 실행합니다.플랫폼 독립성 보장: 위에서 설명한 'Write Once, Run Anywhere'를 실현합니다.메모리 관리 (Garbage Collection):개발자가 C/C++처럼 직접 메모리를 할당하고 해제할 필요가 없습니..
-
SOLID 원칙 완벽 정리Java 2025. 6. 18. 17:47
객체지향 설계의 정수, SOLID 원칙 완벽 정리우리가 Java로 객체지향 프로그래밍을 할 때 가장 많이 듣는 조언 중 하나는"유지보수가 쉬운 코드를 작성하라", 또는 "확장에 유연한 구조를 설계하라"는 말이다.하지만 이걸 실제로 어떻게 해야 할까?그 해답이 바로 로버트 마틴(Robert C. Martin, Uncle Bob)이 제안한SOLID 원칙 속에 담겨 있다.이번 글에서는 SOLID 원칙이 무엇이고, 왜 중요한지, 그리고 실무에서 어떻게 적용할 수 있는지 차근차근 정리해보겠다. SOLID란 무엇인가?SOLID는 다섯 가지 객체지향 설계 원칙의 앞글자를 딴 약어이다:원칙 설명SRP단일 책임 원칙 (Single Responsibility Principle)OCP개방-폐쇄 원칙 (Open/Closed ..