Runtime Data Area = JVM의 메모리 영역
1.Method Area
메소드 영역에서는 정적 필드와 클래스 구조를 저장한다.
2. Heap Area
new 연산자로 생성되는 객체와 배열등이 저장된다. 가비지 컬렉션의 대상이 되는 공간이다.
3. Stack Area
임시적으로 사용되는 변수나 정보들이 저장된다
4. PC 레지스터
현재 수행중인 JVM 명령어 주소를 저장한다
5. Native Method Stack
기계어로 작성된 프로그램을 실행시키는 영역이다.
Java Heap은 JVM이 관리하는 메모리 영역, Native Memory는 운영체제가 관리하는 메모리 영역이다.
Java 8 부터는 클래스 정보가 Metaspace라는 영역에 올라간다
클래스 정보는 처음 사용될 때 메모리에 그 정보를 올리고 필요할때마다 사용하게 된다.
Person p1 = new Person(); // JVM이 CLASSPATH에서 Person 클래스를 찾고 메모리에 올린다
Person p2 = new Person();
p2 인스턴스를 생성할때는 이미 메모리에 올라가있는 Person클래스 정보를 이용해서 인스턴스를 생성한다.
클래스는 로딩될 때 Metaspace에 클래스가 로딩된다
static 정보는 java8이상 부터는 heap에 저장된다
Metaspace에 대해서는 더 공부해보자
'Java' 카테고리의 다른 글
java Overflow(오버플로우) (0) | 2024.05.25 |
---|---|
Java Reflection 알아보기 (0) | 2024.05.16 |
MAVEN 도서 읽으면서 정리한 내용 (0) | 2024.04.01 |
정렬할때 쓰기 좋은 메소드 (0) | 2024.02.15 |
문자열과 String 클래스 (0) | 2024.01.05 |