프로그래밍/Java
JVM의 메모리 구조
김치치즈스마일
2017. 8. 13. 15:35
JVM은 용도에 따라 여러 영역으로 나누어 메모리를 관리한다.
과연 어떤식으로 관리하는지 알아보자.
메서드 영역 (Method Area = Class Area = Static Area)
· 프로그램 실행 중 어떤 클래스가 사용되면, JVM은 해당 클래스의 클래스 파일(*.class)을 읽어서 분석하여 클래스에 대한 정보를 이곳에 저장함. 이 때, 그 클래스의 클래스 변수도 이 영역에 함께 저장.
호출 스택 (Call Stack 또는 Execution Stack)
· 메서드의 작업에 필요한 메모리 공간을 제공.
· 메서드가 호출되면, 메서드 수행에 필요한 메모리 공간을 할당, 메서드가 종료되면 사용하던 메모리를 반환하고 스택에서 제거.
· 메서드가 작업을 수행하는 동안 지역 변수(매개 변수 포함)들과 중간 결과 등을 저장함.
· 호출 스택 맨 위에 있는 메서드가 현재 실행 중인 메서드.
힙 (Heap)
· 인스턴스가 생성되는 공간.
· new 연산자에 의해서 생성되는 배열과 객체는 모두 여기에 생성.
[참고] 자바의 정석