최초 : Original from Honux
JVM이란?
: Java Virtual Machine
- JVM : 콤퓨터에서 자바프로그램이 동작할 수 있도록 구현(implementation)한 가상머신
- 가상머신(virtual machine) : ??? 실제기계는 아닌데 기계만큼 복잡해
- 프로그래밍 언어를 만들때 Spec과implementation 두가지가 있는데
- Spec : 명세서, 설계자의 의도, 설계도
- implementation : spec대로 동작할 수 있도록 실제로 개발해놓은 결과물
- 자바 언어의 포인트
- 자바 애플릿의 성공
: 모든 컴퓨터에서 어떤 환경에서라도 동일하게 실행할 수 있게
- 멀티쓰레드의 버그와 어려움
: 자바는 언어차원에서 멀티쓰레드를 지원하는데 이게 참 어렵고 버그를 많이 유발한다
- 풋프린트(메모리 풋프린트)
: 원래 자바가 가전제품에 넣으려고 만든 언어인데 가전제품에는 안들어갔다. 가전제품같이 메모리풋프린트에 여유가 없는 상황에는 잘 안맞고
: 자바는 메모리 풋프린트가 여유있는 서버 어플리케이션 용도로 매우 좋은 언어다!
JVM 구성요소
: JVM 을 이루는 3대 구성요소
1.클래스로더 서브시스템
2.런타임 데이터 에이리어
3.엑시큐션 엔진(실행엔진)
1.클래스로더 서브시스템
- 자바파일을 컴파일을 하면 자바-바이트코드가 들어있음
- JRE JDK 차이 : 단순 배포&실행용인지, 개발자용도냐의 차이
- 클래스 로더 3단계 : 실행하는 순간 메모리에 로딩한다
- 로링
- 링킹
- 이니셜라이제이션
2.런타임 데이터 에이리어
- 메소드 영역 : 코드영역+데이터영역
3.익시큐션 엔진(실행엔진