Java 코드는 JVM에서 컴파일되어 실행되는데, 이런 방식으로 실행하면 어떤 이점이 있을까요?
컴파일 후에 CPU가 이해할 수 있는 코드 형식(일반적으로 기계어 코드라고 함)을 직접 생성할 수 있는 C/C++ 언어와 달리 Java 컴파일은 코드를 가상 머신 실행 가능 바이트코드로 변환합니다. Java 가상 머신은 다양한 플랫폼(Windows, Linux, Mac 등)에 따라 하드웨어 또는 소프트웨어로 구현될 수 있습니다. 이것의 장점은 Java 코드가 바이트코드로 컴파일되면 다양한 가상 머신 플랫폼에서 실행될 수 있다는 것입니다. 이는 우리가 종종 "한 번 컴파일하면 어디서나 실행 가능"이라고 부르는 것입니다. 또한 가상 머신은 호스팅 환경, 범위를 벗어난 배열, 동적 유형, 보안 권한 등과 같은 동적 감지 기능도 제공하므로 비즈니스 로직 개발에 더 많은 관심을 기울일 수 있습니다.
Java Virtual Machine
가상 머신의 관점에서 볼 때 Java 코드를 실행하려면 먼저 컴파일된 클래스 파일을 Java 가상 머신에 로드해야 합니다. 기계. 로드된 Java 클래스는 메소드 영역에 저장됩니다. Java 가상 머신은 런타임 메모리 영역을 메소드 영역, 힙, PC 레지스터, Java 메소드 스택 및 로컬 메소드 스택의 다섯 부분으로 나눕니다.
Java 실행 프로세스
실행 프로세스 중에 호출이 Java 메서드에 들어갈 때마다 Java 가상 머신은 Java 메서드 스택을 엽니다. 현재 스레드의 스택 프레임은 지역 변수와 바이트코드 피연산자를 저장하는 수영복에 생성됩니다. 이 프레임의 크기는 미리 계산되어 있으며 Java Virtual Machine에서는 연속적인 스택 메모리가 필요하지 않습니다. 메서드를 종료할 때 정상적으로 반환하든 비정상적으로 반환하든 JVM(Java Virtual Machine)은 현재 프레임을 팝업하고 삭제합니다. 하드웨어 관점에서 보면 자바 바이트코드는 직접 실행될 수 없기 때문에 자바 가상 머신은 바이트코드를 CPU가 인식할 수 있는 기계어 코드로 변환해야 합니다.
위의 번역 과정에는 두 가지 상황이 있습니다. 첫 번째는 해석과 실행입니다. 즉, 바이트코드를 하나씩 기계어 코드로 번역하고 실행하는 것입니다. 두 번째는 JIT(Just-In-Time Compilation)입니다. 메소드의 모든 바이트코드는 실행 전에 기계어 코드로 변환됩니다.
전자의 장점은 컴파일을 기다릴 필요가 없다는 것이고, 후자의 장점은 실제로 실행 속도가 더 빠르다는 것입니다. 더 빠른 실행 속도를 달성하기 위해 Java 가상 머신은 일반적으로 두 가지 방법, 즉 두 가지 장점을 결합한 혼합 모드를 채택합니다. JIT(Just-In-Time) 컴파일 기술은 80-20 규칙 이론을 기반으로 합니다. 즉, 코드의 20%가 컴퓨팅 리소스의 80%를 차지합니다. 대부분의 흔하지 않은 코드에는 해석이 사용되고, 일반적으로 사용되는 소수의 코드에는 JIT(Just-In-Time) 컴파일이 사용되어 합리적인 실행 속도에 도달했습니다.
컴퓨팅 리소스가 충분할 때 바이트코드 해석, 실행, 즉시 컴파일 및 동시 실행이 가능합니다. 컴파일이 완료되면 다음 번에 해석 실행을 교체하고 기계어 코드를 직접 실행할 수 있습니다. 일반적으로 Java 코드의 실행 효율성은 가상 머신의 구성 및 작동 모드와 많은 관련이 있습니다. Java 가상 머신을 최적화하면 코드의 실행 효율성을 효과적으로 향상시킬 수 있습니다.
위 내용은 Java를 컴파일하고 실행하면 어떤 이점이 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!