자바의 메모리 공간은 크게 Method 영역, Stack 영역, Heap 영역으로 구분되고, 데이터 타입에 따라 할당된다.
메소드(Method) 영역 : 전역변수와 static변수를 저장하며, Method영역은 프로그램의 시작부터 종료까지 메모리에 남아있다.
스택(Stack) 영역 : 지역변수와 매개변수 데이터 값이 저장되는 공간이며, 메소드가 호출될 때 메모리에 할당되고 종료되면 메모리가 해제된다. LIFO(Last In First Out) 구조를 갖고 변수에 새로운 데이터가 할당되면 이전 데이터는 지워진다.
힙(Heap) 영역 : new 키워드로 생성되는 객체(인스턴스), 배열 등이 Heap 영역에 저장되며, 가비지 컬렉션에 의해 메모리가 관리되어 진다.
각 메모리 영역이 할당되는 시점
Method 영역 : JVM이 동작해서 클래스가 로딩될 때 생성
Stack 영역 : 컴파일시 할당
Heap 영역 : 런타임시 할당
※ 컴파일 타임 : 소스코드가 기계어로 변환되어 실행가능한 프로그램이 되는 과정
※ 런타임 : 컴파일 타임 이후 프로그램이 실행되는 때
'개념 창고 > JAVA' 카테고리의 다른 글
[Java] 문자열(String) 비교시 equals()와 == 차이 (0) | 2024.07.30 |
---|---|
[Java] Unsigned int 구현 방법 (0) | 2024.01.31 |
[Java] BigInteger 사용 이유, 형변환, 두 수 비교 (0) | 2022.12.21 |
[Java] char는 사실 문자가 아닌 정수다. (0) | 2022.12.08 |
char를 문자열로 변환하는 방법(3가지) (0) | 2022.12.08 |