본문 바로가기
카테고리 없음

메모리 구조 메소드(Method), 스택(Stack), 힙(Heap) 영역에 대하여

by kangs' tong 2023. 8. 27.

메모리 구조

컴퓨터가 프로그램을 실행하기 위해 사용하는 주기억장치인 메모리는 여러 개의 영역으로 나뉘어져 있습니다. 메소드(Method), 스택(Stack), 힙(Heap) 등은 이 메모리 영역 중에서 중요한 세 가지입니다.

메소드(Method)

메소드(Method) 영역은 자바 프로그램이 시작될 때 이미 메모리에 올라오는 영역으로, 프로그램 코드와 정적 변수들이 저장됩니다. 이 영역은 프로그램이 실행되는 동안 변경되지 않고 공유되는 데이터를 저장하는 공간입니다.

메소드 영역은 JVM마다 하나씩만 존재하며, 클래스에 대한 정보(메소드, 변수, 상수)가 로드될 때 생성됩니다. 메소드 영역에 저장되는 데이터는 다른 영역에서 접근이 가능하며, 클래스 로더에 의해 로딩되고 필요한 경우 언로드됩니다.

스택(Stack)

스택(Stack) 영역은 메소드 호출 시에 필요한 메모리를 저장하는 영역입니다. 각 스레드마다 별도의 스택이 생성되고, 메소드 호출 시에 스택 프레임(Stack Frame)이라는 작은 메모리 블록이 생성됩니다.

스택 영역은 변수와 매개변수의 값을 저장하며, 스택 프레임은 메소드 호출이 끝난 후에 자동으로 제거됩니다. 이러한 특성 때문에 스택은 메모리를 효율적으로 사용할 수 있고, 메모리 할당과 해제가 자동으로 처리되기 때문에 프로그래머가 메모리 관리에 신경쓰지 않아도 됩니다.

힙(Heap)

힙(Heap) 영역은 동적으로 생성된 객체와 배열이 저장되는 영역입니다. 힙은 생성되는 객체들에 대한 동적인 할당과 해제를 담당하며, 가비지 컬렉터에 의해 사용되지 않는 객체들은 자동으로 해제됩니다.

힙 영역은 프로그램이 실행되는 동안 계속해서 크기가 변동될 수 있으며, 스택 영역과는 다르게 메모리를 직접적으로 제어하는 것은 불가능합니다. 대신, 가비지 컬렉터가 더 이상 사용되지 않는 메모리를 자동으로 해제하여 효율적으로 관리합니다.

마무리

메모리 구조는 메소드, 스택, 힙이라는 세 가지 영역으로 나누어져 있습니다. 메소드 영역은 프로그램 코드와 정적 변수가 저장되는 영역이며, 스택 영역은 메소드 호출 시 필요한 메모리를 저장하는 영역입니다. 힙 영역은 동적으로 생성된 객체와 배열이 저장되는 영역으로, 가비지 컬렉터에 의해 사용되지 않는 객체들은 자동으로 해제됩니다. 이렇게 메모리를 효율적으로 사용하면서도 프로그래머가 메모리 관리에 신경쓰지 않아도 되는 장점을 가지고 있습니다.

댓글