08 Jan 2020
Java 메모리 구조(1)
Java 메모리 구조(1)
Static
- 모든 Thread가 공유하는 Memory 영역
- Method area, Class Area, Code Method 라고도 불린다.
- Class, Interface, Method, Field, Static Field 등이 저장된다
- JVM에서 읽어 들인 클래스와 인터페이스에 대한 런타임 상수 풀, 메소드와 필드, static 변수, 메소드 바이트 코드 등을 보관
- JVM이 시작될 때 생성되어 프로그램 종료 시까지 사용된다
- Field Information
- 멤버변수의 이름, 데이터 타입, 접근 제어자에 대한 정보
- Method Information
- 메서드의 이름, 리턴 타입, 매개변수, 접근제어자에 대한 정보
- Type Information
- Type의 속성이 Class인지 Interface인지의 여부 저장
- Type의 전체 이름(패키지명 + 클래스명)
- Type의 Super Class의 전체 이름(단, Type이 Interface이거나 Object Class인 경우 제외)
- 접근 제어자 및 연관된 interface의 전체 리스트 저장
- Constant Pool(상수 풀)
- Type에서 사용된 상수를 저장하는 곳(중복이 있을 시 기존의 상수 이용)
- 문자 상수, 타입, 필드, Method의 Symbolic Reference(객체 이름으로 참조)도 상수풀에 저장
- Class Variable
- Static 변수
- 모든 객체가 공유 할 수 있고, 객체 생성없이 접근 가능
- Class 사용 이전에 메모리 할당
- final class 변수의 경우(상수로 치환되어) 상수 풀에 값 복사
Runtime Constant Pool
- static area에 포함되지만 독자적인 중요성을 띈다.
- class 파일 constant pool 테이블에 해당하는 영역
- 클래스와 인터페이스 상수, 메소드와 필드에 대한 모든 레퍼런스 저장
- JVM은 런타임 상수 풀을 통해 해당 메소드나 필드의 실제 메모리상 주소를 찾아 참조
Til next time,
Jeong-Yoon
at 00:00
