GC(Garbage Collection)
·
JAVA
📌 GC란?GC는 자바에서 사용되지 않는 객체(= 참조되지 않는 객체)를 Heap 메모리에서 자동으로 회수하는 기능입니다.✅ 목적개발자가 free()나 delete 없이도 메모리 누수를 방지애플리케이션의 안정성 & 유지보수성 향상JVM Heap 메모리 구조 (Generational GC)Heap├── Young Generation│ ├── Eden│ └── Survivor 0│ └── Survivor 1└── Old Generation영역설명Eden객체가 처음 생성되는 공간Survivor 0/1살아남은 객체들이 임시로 이동하는 공간Old여러 번 살아남은 객체들이 올라가는 영역🔍 대부분의 객체는 "금방 죽는다"는 관찰에 기반한 구조 → 세대별 관리Survivor 0/1 두 개로 나뉘는..
Stack vs Heap
·
JAVA
자바에서 Stack 과 Heap ✅ 스택(Stack)과 힙(Heap)은 뭐고, 왜 나뉘는가?자바 프로그램 실행 -> 필요한 데이터를 JVM 에 저장합니다.이때 저장되는 데이터의 성격은 다름 -> JVM 은 크게 Stack 과 Heap으로 나눠서 메모리 관리합니다. 🧮스택(Stack)📌 정의메서드 호출 정보와 지역 변수를 저장하는 공간 → 스레드마다 하나씩 존재합니다.public int add(int a, int b) { int sum = a + b; return sum;}a, b, sum: 모두 지역 변수 → Stack에 저장add() 메서드 호출 정보 (파라미터, 복귀 주소 등) → Stack에 저장⚙️ 작동 방식: LIFO메서드가 호출될 때 → Stack에 쌓임 (Push)메서드가 끝날 때 →..
JIT(Just-In-TIme) Complination
·
JAVA
📌 1. 개요 – JIT 컴파일러란?Java는 "한 번 작성하면 어디서나 실행"을 목표로 하기 때문에, Java 코드는 .java → .class로 변환되어 바이트코드로 실행됩니다. JVM은 이 바이트코드를 인터프리팅하면서 실행하지만, 이 방식은 속도가 느립니다. 그래서 등장한 것이 JIT(Just-In-Time) 컴파일러입니다. JIT 컴파일러는 실행 중 자주 호출되는 메서드(Hot Method)를 감지하여, 해당 바이트코드를 Native Code(기계어)로 변환하여 성능을 극적으로 향상시킵니다.⚙️ 2. JIT 컴파일 동작 흐름.java → javac → .class (Bytecode) ↓ JVM이 실행 중 분석 ..