1. 자바 플랫폼(Java Platform)
자바플랫폼은 자바 API + JVM으로 이루어져있다.
자바 API는 프로그램에 사용할 수 있는 이미 컴파일 된 클래스 파일들로 이루어져 있는 라이브러리다.
2. JVM(Java Virtual Machine) 의 구성
- class loader : 클래스들을 필요한 시점에 메모리에 로딩하는 기능
- byte code verifier : 클래스 파일을 기계어로 번역하기 전에 문법, 부정확 데이트 타입등의 코드를 검증한다.
- interpreter : 클래스 파일을 컴퓨터가 이해할수 있도록 기계어로 바꾼다.(byte code -> binary code)
3. JVM 의 데이터 영역
- Class : 메모리에 로딩된 클래스 들의 부모클래스, 멤버변수리스트, 메소드 리스트 들의 정보를 포함하고 있는 데이터 영역
- Static : 일정 자바 메소드가 아닌 native 메소드의 호출 내역이 저장되는 영역.(자바의 보안정책상)
- Stack : 특정 메소드의 호출경로가 지정되어 지는 데이터 영역
- Heap : new 라는 키워드를 이용해서 생성된 자바 객체들이 저장되는 일시적인 영역, 가비지 컬렉터가 수행되는 영역
4. 가비지 컬렉션이란?
- 자바 클래스 객체가 생성될 때 필요한 메모리는 Heap 에 할당된다.
자바는 자동으로 메모리 회수를 하여 나중에 메모리 부족현상이 나오지 않도록 한다.