JVM 전체 구조
-
힙 쓰레드가 공유하는 영역은 가비지 컬렉터가 수집하는 영역으로 주로 사용자가 생성 한 오브젝트를 저장합니다. 예를 들어, new User (),이 객체는 힙에 저장됩니다. -
스택은 로컬 변수, 메서드 반환 값 및 메서드 작업에 의해 생성 된 동적 링크를 저장하는 데 사용됩니다. -
이 메서드 스택 쌍은 네이티브 메서드 (네이티브) 실행의 스택 구조를 저장하는 데 사용됩니다. -
메소드 영역은 jdk1.8에서 메타 스페이스로 이름이 변경되었으며 다음 내용이 주로 여기에 저장됩니다. -
유형 정보 -
유형의 완전한 이름 -
수퍼 클래스의 완전한 이름 -
직접 수퍼 인터페이스의 정규화 된 이름 -
유형 플래그 (클래스가 클래스 유형인지 인터페이스 유형인지 여부) -
클래스 액세스 설명자 (공개, 개인, 기본값, 추상, 최종, 정적)
-
-
상수 풀 -
필드 정보 -
필드 수정 자 (공개, 보호, 개인, 기본값) -
필드 유형 -
분야 명
-
-
방법 정보 -
클래스 변수 -
다양한 참조 -
클래스 인스턴스에 대한 참조 -
로더 참조
-
-
메서드 테이블 메서드 테이블은 비추 상 클래스의 위도를 사용하여 생성 된 배열로, 배열의 요소는 액세스 효율성을 높이기 위해 클래스의 각 메서드에 대한 직접 참조입니다.
-
-
프로그램 카운터 프로그램 카운터는 스레드가 전환하기 전에 명령을 실행하는 줄 번호를 저장하는 데 사용됩니다. 이것은 주로 멀티 스레딩의 경우 스레드 전환 문제를 해결하기위한 것입니다. 단일 스레드 만있는 경우 실제로 프로그램 카운터는 필요하지 않습니다.
힙 영역은 어떻게 분할됩니까?
jvm을 연결 한 학생들은 힙이 실제로 가비지 콜렉션을 위해 설계된 구조 인 구시대와 신시대로 나뉘어져 있음을 알아야합니다
신규 및 이전 연령과 관련된 JVM 매개 변수
-
-XX : NewRatio는 신세대와 구세대의 비율을 설정합니다. 예를 들어 -XX : NewRatio = 5는 신세대와 구세대의 비율이 1 : 5, 신세대가 힙 메모리의 1/6을 차지함을 의미합니다. 이전 세대는 5/6을 차지합니다 .jvm은 새 세대와 이전 세대를 1 : 2로 기본 설정합니다. 프로그램이 -XX : MaxNewSize 값을 지정하기 시작하면 매개 변수 설정 비율이 유효하지 않으며 값이 이전 세대는 힙 메모리 크기에서 MaxNewSize를 뺀 것입니다. -
-XX : SurvivorRatio 새로운 세대에서 eden과 두 Survivo 영역의 비율을 설정합니다. 예를 들어 -XX : SurvivorRatio = 8, eden : s1 : s2 = 8 : 1 : 1, 기본 비율은 8 : 1입니다. 1.
Young GC는 젊은 세대에서 발생하고 FUll GC는 전체 힙 공간에서 발생하며 일반적으로 구세대의 공간이 충분하지 않은 경우 FULL GC가 시작됩니다.
탈출 분석
이스케이프 분석은 일반적인 개체는 힙에 할당되고 힙에 할당 된 개체는 가비지 수집기가 수집 할 때까지 기다려야하기 때문에 스택에 할당 할 수있는 메서드 내부의 개체를 분석하는 데 주로 사용됩니다. 힙 공간을 차지하지만 메서드 내부의 경우 다음 조건을 충족하면 객체를 스택에 할당 할 수 있습니다.
-
지역 변수 -
멤버 변수에 할당되지 않음 -
반환 값으로 튀어 나오지 않았습니다.
jdk1.7 이전에는 -XX : + DoEscapeAnalysis 매개 변수를 사용하여 설정해야하고, jdk1.7은 기본적으로 이스케이프 분석을 설정하고, 해제해야하는 경우 -XX : + DoEscapeAnalysis 매개 변수를 사용하여 설정해야합니다. 떨어져서
Just-In-Time 컴파일 기술이란?
JVM의 작동 모드는 무엇입니까?
-
해석 모드는 한 줄의 바이트 코드를 실행하고 실행을 위해 한 줄의 기계 코드로 컴파일합니다. -
특징 : 해석 모드를 사용하면 JVM 시작 속도는 빠르지 만 명령 실행이 느리고 한 줄씩 컴파일해야합니다.
-
-
컴파일 모드는 먼저 모든 바이트 코드를 기계 코드로 컴파일 한 다음 모든 기계 코드를로드하여 한 번에 실행할 수 있습니다. -
특징 : 컴파일 모드를 사용하면 컴파일이 필요하기 때문에 JVM 시작 속도가 약간 느려지지만 실행할 때 거의 소비가 없습니다.
-
-
혼합 모드는 해석 모드를 사용하여 코드를 실행하지만 일부 핫스팟이나 공유 코드 조각이 발견되면 컴파일 된 모드에서 실행되고 컴파일 된 콘텐츠가 캐시되어 반복 컴파일을 줄여 코드 실행 효율성을 향상시킵니다. . 이것은 JVM에서 사용되는 기본값이기도합니다. 컴파일 모드, JIT (Just-in-time 컴파일 기술)입니다.