Java 메모리 사용영역
메모리 사용 영역
- JVM은 OS에서 할당받은 메모리 영역(Runtime Data Area)을 세 영역으로 구분한다.
- 메소드 영역
- JVM을 시작할 때 생성
- 로딩된 클래스 바이트 코드 내용을 분석 후 저장
- 모든 스레드가 공유
- 힙 영역
- JVM을 시작할 때 생성
- 객체/배열 저장
- 사용되지 않는 객체는 GC가 자동 제거
- JVM스택
- 스레드별로 생성
- 메소드를 호출할 때마다 Frame을 스택에 추가(push)
- 메소드가 종료하면 Frame을 제거(pop)
- 메소드 영역
메모리 사용 영역 실행순서
- Java MemoryExample
- 운영체제로부터 메모리를 할당받아서 MemoryExample프로그램을 실행시킴
- JVM 구동
- 메소드 영역(Method Area)과 힙(Heep Area)영역이 생성됨
- MemoryExample 로딩
- 메소드영역에 코드가 분석된 내용이 올라감
- main 스레드 생성
- main 스레드가 생성, 동시에 JVM 스택 생성
- main() 메소드 호출
- JVM스택에 프레임이 생성됨
- main 메소드 실행
public static void main(String[] args) {...}
- 매개변수
String[] args
가 매개값으로 들어온다. args
매개변수는 프레임 내부에 생성된다.- String배열객체는 힙영역에 생성된다.
- 매개변수
- JVM 종료
Leave a comment