티스토리 뷰

연말에 회사에서 공공도서를 신청하라고 해서 EXEM에서 출간한 "JVM Performance Optimizing 및 성능분석사례" 구매해줘서 요즘 remind해서 보고 있다. 차세대 APM(Application Performance Monitoring) Tool로 해당 회사에서 운영하는 솔루션이라 연관성이 있기도 했지만 개념 정리 및 사례별 정리가 잘 되어 있어 참고하려고 한다.

1. JVM((Java Virtual Machine) 정의: Java(프로그래밍 언어) + Virtual(물리적인 형태가 아닌 Software로서의 형태) + Machine(독자적으로 작동할 수 있는 매커니즘과 구조를 가지고 있음) = 자바 프로그램을 실행하는 가상의 머신

--> 별도로 설치할 필요없이 JDK를 설치하면 자동으로 설치된다.

2. 프로그램 수행과정

JAVA 프로그래밍 수행과정

자바 코드가 생성되면 javac를 통해 컴파일(기계어로 전환)한다. 확장자 .java로 된 파일이 컴파일 과정을 거치면 .class로 변환된다. 이 변환된 .class를 실행하려면 JVM을 실행하는데 class파일을 Loader가 읽어들여 Runtime Data Area에 객체를 저장하고 Excution Engine을 통해 해석된다.

각각의 기능은 아래와 같다.

Method Area:  클래스, 변수, Method, Static 변수, 상수 정보 등이 저장되는 영역(모든 Thread가 공유)

Heap Area: new 명령어로 생성된 인스턴스와 객체가 저장되는 구역(GC는 이 영역에서 발생, 모든 Thread 공유)

Stack Area: Method 내에서 사용되는 값들(매개변수, 지역변수, 리턴 값 등)이 저장되는 구역

PC Regiser:CPU의 Register와 역할이 비슷함. JVM 명령의 주소 값 저장

Native Method Stack : 다른 언어 메소드 호출을 위해 할당되는 구역으로 언어에 맞게 Stack이 형성되는 구역

728x90
반응형
댓글