[10분 테코톡]-무민의 JVM Stack & Heap

JVM (Java Virtual Machine)
- OS의 메모리 영역에 접근해서 Java의 메모리를 관리하는 가상의 프로그램
크로스 컴파일 (Cross Compile)
자바 바이트코드는 타겟 플랫폼에 상관 없이 JVM 위에서 동작함! (JVM은 타겟 플랫폼에 의존)
WORA
- Write Once, Run Anywhere - Sun Microsystems
Stack 영역
우리가 기본형 타입(Primitive Type)을 선언할 때, 해당 값들은 Stack 영역에 직접 값이 저장된다.
- 후입 선출(Last In First Out) 구조를 가지고 있음
- 공간이 CPU에 의해 관리됨
- 변수 할당 해제에 신경 쓸 필요가 없음 (CPU가 관리)
- 변수의 크기 조정 불가 (기본형만 가능)
- 변수를 사용하려면 반드시 값이 들어가야 함 (Null X)
- 크기가 제한적이다
CPU가 메모리 직접 접근/관리를 하기 때문에 빠르며, 메모리 누수(Memory Leak) 문제가 없다.
Heap 영역
참조형(Reference Type) 변수들의 실제 값이 여기에 저장된다
- 메모리 크기 제한이 없다.
- Stack에 비해 느리다.
- 메모리를 관리에 책임이 있다.
- new 명령어로 생성된 인스턴스와 객체가 저장되는 영역.
- Garbage Collector가 참조되지 않는 메모리를 확인하고 제거하는 영역이다.