JVM(Java Virtual Machine) 다양한 방식(소프트웨어 또는 하드웨어)으로 구현될 수 있는 컴퓨팅 장치에 대한 사양입니다. 다음으로 이 글에서는 Java JVM 가상 머신의 작동 메커니즘에 대해 간략하게 소개하겠습니다. 관심 있는 친구들은 함께 살펴보세요
1: JVM의 기본 개념
JVM(Java Virtual Machine) 다양한 방식(소프트웨어 또는 하드웨어)으로 구현될 수 있는 컴퓨팅 장치에 대한 사양입니다. 가상 머신용 명령어 세트를 컴파일하는 것은 마이크로프로세서용 명령어 세트를 컴파일하는 것과 매우 유사합니다. JVM(Java Virtual Machine)에는 바이트코드 명령어 세트, 레지스터 세트, 스택, 가비지 수집 힙 및 저장 방법 필드가 포함되어 있습니다.
JVM(Java Virtual Machine)은 Java 코드를 실행할 수 있는 가상의 컴퓨터입니다. 인터프리터가 JVM 사양에 따라 특정 컴퓨터로 이식되는 한 컴파일된 모든 Java 코드는 해당 시스템에서 실행되도록 보장될 수 있습니다.
Jvm의 아키텍처 다이어그램을 살펴보자:
2: 해석된 언어와 컴파일된 언어의 연결과 차이점 .
컴파일 언어는 컴파일러를 사용하여 프로그램을 대상 컴퓨터에서 인식할 수 있는 기계어 코드로 컴파일하는 반면, 해석 언어는 컴파일 과정이 필요하지 않으며 스크립트를 컴퓨터에서 읽습니다. 언어의 인터프리터, 문법 규칙에 따라 해석한 다음 인터프리터(또는 라이브러리 함수 )의 내장 명령을 호출합니다. 예를 들어 C 언어의 printf() 함수를 정적으로 컴파일한 뒤 printf()에 필요한 모든 코드를 기계어 형태로 실행 파일에 적고, 쉘 실행 프로그램 실행시 지정된 경로 에서 파일을 검색하면 로더(Loader)가 해당 프로그램의 ELF 파일을 메모리에 로드한 후 해당 프로그램 항목으로 점프한 후 넘겨준다. 프로그램에 대한 제어.
동적 컴파일의 경우 상황이 조금 다릅니다. printf()는 매우 일반적으로 사용되는 함수이므로 시스템은 공통 함수를 라이브러리에 수집합니다. Myprintf() 함수를 작성하고 printf()를 호출하면 동적 컴파일 후에 형성된 ELF 파일이 포함되지 않습니다. printf()와 관련된 코드가 있지만 시스템에 다음과 같은 정보가 있습니다. "내 프로그램은 printf()를 호출하므로 printf()의 주소가 필요합니다." ELF 파일을 로드한 후 먼저 동적 링커(ldd)를 실행합니다. ldd는 프로그램이 의존하는 동적 라이브러리를 알고 있습니다. 동적 라이브러리가 시스템에 로드되지 않은 경우 시스템에 라이브러리를 로드하고 항목을 바인딩하도록 알립니다. 필요한 경우 프로그램 항목 주소로 점프하여 프로그램 실행을 시작합니다. 여기서 우리가 작성한 프로그램이 컴파일되면 특정 기계의 기계어 코드와 일부 보조 정보(기호 테이블, 주소, 변수 값 등)가 되고, 이를 통해 "동적"이 됩니다. 시스템 로딩 및 실행 메커니즘. "절차" - 프로세스.
통역언어의 실행과정은 인터프리터, python, perl, Ruby 등과 분리될 수 없다. 따라서 스크립트의 첫 번째 줄은 일반적으로 #/usr/bin/×××입니다. ×××는 각 언어에 해당하는 통역사를 나타냅니다. 스크립트는 일반적으로 표현식(표현식)과 표현식 블록으로 구성됩니다. 통역사가 가장 먼저 해야 할 일은 "실행 순서"를 형성하기 위해 표현식 구조를 분석하고 이해하는 것입니다. 이 "실행 시퀀스"는 중립적이며 기본 시스템을 대상으로 하지 않으므로 "이식성"이 높습니다. 여기서 "실행 순서" 대신 "바이트코드"를 사용하지 않은 이유는 jvm에는 바이트코드라는 개념이 있는데, 둘 사이에는 상당한 차이가 있기 때문이다. 실행 순서를 결정하는 것은 인터프리터의 가장 중요한 역할입니다. Python의 함수 출력이 python_print()라고 가정하면 Python 인터프리터가 스크립트를 "해석"할 때 이 표현식을 발견하면 시스템의 print() 함수를 호출하여 출력 작업을 수행합니다. 스크립트를 고급 구성 파일으로 이해할 수도 있습니다. 이 파일은 Python 인터프리터에게 실행 방법에 대한 몇 가지 규칙이 인터프리터 내부에 공식화되어 있습니다.
3: Java 실행 프로세스
Java 프로그램의 JVM 실행은 이미 머신이라고 불리기 때문에 위의 두 가지보다 더 복잡합니다. 아래 그림은 JVM의 구조 블록 다이어그램이다. 주로 포함되는 항목: 가비지 수집기, 클래스 로딩 하위 시스템, 실행 엔진, 런타임 데이터 영역 등
위 내용은 Java JVM 가상 머신 작동 메커니즘에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!