JVM의 스택과 힙메모리 영역에 대해 아는 만큼 설명해주실 수 있을까요?
스택(Stack) 메모리
- 스택 메모리는 각 스레드마다 별도로 할당됩니다.
- 각 메소드 호출 시 메소드에 대한 정보(매개변수, 지역 변수, 복귀 주소 등)를 저장합니다.
- 메소드가 호출될 때 스택 프레임(Stack Frame)이라고 불리는 작은 블록이 만들어집니다. 이 프레임에는 해당 메소드의 매개변수, 지역 변수, 복귀 주소 등이 저장됩니다.
- 메소드가 실행을 마치면 해당 스택 프레임은 스택에서 제거됩니다.
- 요약하면, 스택 메모리는 일시적인 정보를 저장하는 공간입니다. 함수가 호출될 때마다 작은 공간을 차지하며, 함수가 끝나면 그 공간이 사라집니다.
작은 메모리 공간이 필요하지만 빠른 속도가 요구됩니다.
힙(Heap) 메모리
- 힙 메모리는 객체 인스턴스와 배열이 생성될 때 사용됩니다.
- 모든 스레드에서 공유되는 메모리 영역입니다.
- 객체와 배열은 동적으로 생성되기 때문에 힙 메모리에 할당됩니다.
- 요약하면, 힙 메모리는 긴 시간 동안 정보를 저장하는 공간입니다. 동적으로 생성된 데이터들이 저장되며, 프로그램이 실행되는 동안 유지됩니다. 큰 메모리 공간이 필요하지만 속도는 스택보다 느릴 수 있습니다.