Open kgh2120 opened 4 months ago
JVM 메모리 구조는 Java 애플리케이션이 실행될 때 필요한 데이터를 저장하는 공간으로 Java Class 파일들을 관리하는 Method Area와 Java 언어 외의 언어들을 저장하는 Native Method Area, CPU 내에서 연산을 처리하기 위한 명령을 수행함에 있어 해당 명령의 주소를 저장하는 역할을 하는 PC Register Area, 마지막으로 처음에 만들어진 객체들을 저장해놓는 공간인 Heap Area와 내부에서 Method 실행 중 임시적으로 변수를 저장할 공간인 Stack Area로 나뉩니다. Multi-thread 기준으로 Method Area와 Heap Area는 공용 저장 공간에 있지만 나머지 Native Method Area와 Stack Area, PC Register Area는 각각 쓰레드 내에서 관리합니다.
1. Java 어플리케이션에서 jvm 메모리는 각자 독립적일까요? 독립적이라고 생각합니다. 각각의 메모리 공간은 별도로 할당되어있어 독립적으로 저장되고 있으며 서로 간섭하지 않기 때문입니다.
JVM메모리구조는 크게 Method, Heap, Stack, PC Register, Native Method Stack 으로 구성되어 있습니다. 각각에 대해 설명하자면 method영역의 경우 클래스들의 메타데이터가 저장되는 공간입니다. heap영역은 동적으로 할당된 객체들이 저장되는 공간입니다. Stack 영역은 메소드 호출시 사용되는 지역변수, 매개변수 등이 저장되는 공간입니다. PC Register는 현재 실행중인 명령어의 주소를 저장합니다. 마지막으로 Native Method stack 은 Java외의 언어로 작성된 코드들이 저장되는 공간입니다.
- heap과 method 영역은 공유되는 메모리이지만, 나머지는 독립적으로 생성됩니다.
JVM 메모리 구조에 대해서 설명해주세요
예상 꼬리 질문
- Java 어플리케이션에서 jvm 메모리는 각자 독립적일까요?들어가야 할 키워드 정리