JVM은 컴파일의 결과물인 바이트 코드를 실행하기 위한 가상 머신이다. 컴파일된. class 파일들을 클래스 로더가 읽고 Runtime Data Area 에 올라가면 Execution Engine 이 바이트 코드를 읽게 된다.
JVM의 메모리 구조는 메서드, 스택, 힙 영역이 있다.
메서드 영역 : 런타임 시 생성된 모든 스레드가 공유하는 영역이다. JVM이 읽어 들인 각각의 클래스와 인터페이스에 대한 런타임 상수 풀, 필드와 메서드 정보, Static 변수, 메서드의 바이트코드 등을 보관한다
스택 영역 : 메서드, 지역변수, 파라미터 등이 저장된다. Stack Frame (스택, 큐 참고)이라는 자료구조가 생성되고, 스택 동장을 수행하다가 동작이 완료되면 메모리에서 사라진다.
힙 영역 : 인스턴스 또는 객체를 저장하는 공간으로 가비지 컬렉션의 대상이 된다. JVM 성능 이슈에서 언급이 가장 많이 되는 영역이다.
이미지 출처
JVM Momory Structure : http://abacus.tistory.com/230
Cover : http://www.slideshare.net/BaabtraMentoringPartner/jvm-37376383