"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > Java Virtual Machine: 라이프사이클 및 클래스 로더

Java Virtual Machine: 라이프사이클 및 클래스 로더

2024년 11월 16일에 게시됨
검색:319

JVM(Java Virtual Machine)은 Java 생태계의 핵심으로, Java 코드 실행에 필요한 모든 필수 도구를 제공합니다. 작동 방식을 완전히 이해하려면 이 인터프리터의 수명 주기와 Java 애플리케이션의 성능 및 최적화에 미치는 영향을 이해하는 것이 중요합니다.

전체 JVM 라이프사이클은 전체 실행 환경을 구축하고 준비하는 "JVM 부트스트래핑"이라는 기본 프로세스로 시작됩니다. 이러한 맥락에서 명령줄에 전달된 인수가 해석되고, JVM 코드가 메모리에 할당되고, JVM의 내부 데이터 구조가 초기화되고, 메모리 관리가 시작되고, 마지막으로 기본 애플리케이션 스레드가 작동을 통과합니다. 이 단락에 설명된 각 하위 프로세스를 개별적으로 살펴보겠습니다.

명령줄에 전달된 인수가 해석됩니다.

명령줄을 통해 프로그램이 시작되면 JVM은 제공된 인수 분석을 담당하는 프로세스 체인을 시작합니다. 여기에는 초기화 매개변수가 포함될 수 있습니다. 최소 크기와 최대 힙을 정의하는 -Xms 및 -Xmx, 애플리케이션 컨텍스트에서 개체를 할당하고 생성하는 메모리 영역(가비지 수집기 주기 자체의 디버그 사양 또는 구성)입니다.

진행하기 전에 다음을 언급하는 것이 중요합니다. 단순화를 위해 고급 JVM 인수(-XX로 시작하는 인수)를 구문 분석하는 코드 세그먼트를 분석할 것입니다.

더 명확하게 설명하기 위해 추가 참조를 위해 OpenJDK의 오픈 소스 코드를 사용하겠습니다. src/hotspot/share/runtime.arguments.cpp 디렉토리에 있는 arguments.cpp 파일에서 CLI가 고급 매개변수(-XX)를 해석하는 함수는 다음과 같습니다.

Java Virtual Machine: ciclo de vida e Class Loaders

간단한 분석을 통해 함수는 전달된 인수가 또는 -로 시작하는지 확인하기 시작하고 플래그가 부울인지 여부와 플래그를 비활성화해야 하는지 활성화해야 하는지 여부를 결정합니다.

Java Virtual Machine: ciclo de vida e Class Loaders

그 후 코드는 플래그 이름을 추출하기 시작합니다. 각 문자를 분석하여 영숫자가 아니거나 _가 아닌 경우 끝납니다(플래그 이름이 완료되었음을 의미).

Java Virtual Machine: ciclo de vida e Class Loaders

검사를 수행하고 플래그 이름을 식별한 후 JVMFlag* flag = find_jvm_flag(name, name_len); 메소드가 마지막으로 호출되어 제공된 항목에 사용 가능한 구성이 있는지 확인합니다.

이것은 -XX의 가장 고급 인수가 구문 분석되는 방법에 대한 간략한 요약입니다. 그러나 내가 언급할 동일한 파일에서 다른 구문 분석 기능을 거치는 -X로 시작하는 인수 프로세스를 찾는 것이 가능합니다:

Java Virtual Machine: ciclo de vida e Class Loaders

플래그의 예: -XMS

Java Virtual Machine: ciclo de vida e Class Loaders

제작 중인 기사

릴리스 선언문 이 기사는 https://dev.to/shyvictor/java-virtual-machine-ciclo-de-vida-e-class-loaders-1ki6?1에 복제되어 있습니다. 침해가 있는 경우에는 [email protected]으로 문의하시기 바랍니다. 그것을 삭제하려면
최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3