JVM 메모리 모델 지식 포인트 요약

3285 단어 JVM메모리 모델
메모리 모델 은 다음 그림 과 같다.

쌓다
더 미 는 자바 가상 컴퓨터 가 관리 하 는 메모리 의 가장 큰 덩어리 이다.더 미 는 모든 스 레 드 가 공유 하 는 메모리 영역 으로 가상 컴퓨터 가 시 작 될 때 만 듭 니 다.이 메모리 영역 에서 유일한 목적 은 대상 인 스 턴 스 를 저장 하 는 것 입 니 다.모든 대상 인 스 턴 스 가 여기에 메모 리 를 할당 합 니 다.
자바 더 미 는 쓰레기 수집 기 관리의 주요 구역 이다.메모리 회수 의 측면 에서 볼 때 현재 쓰레기 수집 기 는 세대 별 수집 알고리즘 을 사용 하고 있 기 때문이다.그래서 자바 더 미 는 신세대 와 연대 로 나 뉜 다.메모리 배분 의 측면 에서 볼 때 스 레 드 가 공 유 된 자바 쌍 은 여러 스 레 드 의 개인 적 인 fenp 버퍼(Thread Local Allocation Buffer)를 나 눌 수 있 습 니 다.
-Xms,-Xmx 를 통 해 각각 더미 초기 화 를 제어 할 수 있 습 니 다.최소 메모리 와 최대 메모리 크기 입 니 다.
가상 컴퓨터 창고
프로그램 카운터 와 마찬가지 로 자바 가상 컴퓨터 스 택 도 스 레 드 가 개인 적 이 고 그의 생명 주 기 는 스 레 드 와 같 습 니 다.
가상 스 택 은 자바 방법의 실행 메모리 모델 을 설명 합 니 다.모든 방법 이 실행 되 는 동시에 스 택 정(stack frame)을 만들어 국부 변수 표,작업 스 택,동적 링크,방법 출구 등 정 보 를 저장 합 니 다.모든 방법 은 호출 에서 실행 이 완 료 될 때 까지 스 택 정 이 가상 스 택 에서 스 택 에 들 어가 스 택 을 나 오 는 과정 에 대응 합 니 다.
가상 스 택 에 저 장 된 데이터 형식 부분 변수 표
저 장 된 것 은 컴 파일 러 로 각종 기본 데이터 형식 을 알 수 있다.
boolean,byte,char,short,int,float,long,double,대상 참조(reference 유형,대상 자체 와 다 르 고 대상 의 시작 메모리 위 치 를 가리 키 는 참조 포인터)작업 스 택 동적 링크 방법 출구
흔히 볼 수 있 는 이상 은 가상 컴퓨터 규범 에서 이 지역 에 두 가지 이상 상황 을 규정 합 니 다.스 레 드 가 요청 한 스 택 깊이 가 가상 컴퓨터 가 허용 하 는 깊이 보다 크 면 StackOverflow Error 를 던 집 니 다.
가상 컴퓨터 스 택 이 동적 으로 확장 할 수 있 고 확장 시 충분 한 메모 리 를 신청 할 수 없 으 면 OutOfmorry Error 에서 기어 나 옵 니 다.
로 컬 방법 창고
가상 컴퓨터 스 택 이 발휘 하 는 역할 과 매우 유사 하 다.그들 간 의 차 이 는 가상 컴퓨터 스 택 이 자바 방법 서 비 스 를 수행 하 는 것 이 고 로 컬 방법 스 택 은 가상 컴퓨터 에 사용 되 는 native 방법 서 비 스 를 제공 하 는 것 이다.가상 컴퓨터 스 택 과 마찬가지 로 로 로 컬 주택 발전 지역 에서 도 StackOverflow Error,OutOf Memorry Error 이상 을 던 집 니 다.
방법 구역(1.8 후 이 구역 폐기)
방법 구역 은 자바 더미 와 마찬가지 로 각 스 레 드 가 공유 하 는 것 으로 가상 컴퓨터 에 불 러 온 클래스 정보,상수,정적 변수,즉시 컴 파일 된 코드 등 데 이 터 를 저장 합 니 다.
방법 구역 은 jvm 이 제기 한 규범 이 고 영구 대 는 방법 구역 의 구체 적 인 실현 이다.
자바 가상 머 신 은 방법 구역 에 대한 제한 이 매우 느슨 하여 더미 처럼 연속 적 인 메모리 가 필요 없 이 선택 할 수 있 는 고정 크기 외 에 도 남 은 쓰레기 수집 을 선택 할 수 있 습 니 다.상대 적 으로 쓰레기 수집 행 위 는 이 지역 에서 비교적 적 게 나타 납 니 다.
방법 영역 에 서 는 영구적 으로 메모리 가 넘 치 는 오 류 를 보고 합 니 다.한편,자바 1.8 은 이 문 제 를 해결 하기 위해 meta space(원 공간)의 개념 을 제 기 했 습 니 다.바로 영구적 인 메모리 가 넘 치 는 상황 을 해결 하기 위해 서 입 니 다.일반적으로 meta space 크기 를 지정 하지 않 은 상황 에서 가상 컴퓨터 방법 구역 의 메모리 크기 는 숙주 호스트 의 메모리 크기 입 니 다.
프로그램 카운터
프로그램 계수 기 는 비교적 작은 메모리 공간 으로 현재 스 레 드 에서 실행 되 는 바이트 코드 의 줄 표시 기 라 고 볼 수 있다.가상 컴퓨터 의 개념 모델 에서 바이트 코드 해석 기 가 작업 할 때 이 카운터 의 값 을 바 꾸 어 다음 실행 할 바이트 코드 명령 을 선택 합 니 다.
JAVA 가상 기기 의 다 중 스 레 드 는 다 중 스 레 드 를 통 해 전환 되 고 프로세서 의 실행 시간 을 분배 하 는 방식 으로 이 루어 지기 때문이다.모든 프로세서 가 하나의 스 레 드 에 있 는 명령 만 실행 할 수 있 습 니 다.따라서 스 레 드 전환 후 정확 한 실행 위치 로 회복 하기 위해 모든 스 레 드 는 독립 된 프로그램 카운터 가 필요 합 니 다.각 스 레 드 의 카운터 간 에 서로 영향 을 주지 않 고 독립 적 으로 저장 되 어야 합 니 다.우 리 는 이러한 메모리 구역 을 스 레 드 개인 이 라 고 부 릅 니 다.
만약 스 레 드 가 자바 방법 을 실행 하고 있다 면,이 계산 기 는 실행 중인 가상 컴퓨터 바이트 코드 명령 의 주 소 를 기록 합 니 다.
런 타임 풀
운행 시 상 당량 탱크 는 방법 구역 의 일부분 이다.Class 파일 은 버 전,필드,방법,인터페이스 등 설명 정 보 를 제외 하고 상수 탱크 도 있 습 니 다.컴 파일 기간 에 생 성 된 각종 글자 의 양 과 기호 인용 을 저장 하 는 데 사 용 됩 니 다.이 부분 은 클래스 로 딩 후 방법 구역 에 들 어 가 는 운행 시 상수 탱크 입 니 다.
런 타임 풀 은 Class 파일 상수 풀 에 비해 또 다른 중요 한 특징 은 동적 인 것 입 니 다.자바 언어 는 상수 가 반드시 컴 파일 러 에서 만 발생 하도록 요구 하지 않 습 니 다.여전히 Class 파일 에 미리 설 치 된 상수 풀 의 내용 이 방법 구역 에 들 어 갈 수 있 는 상수 풀 이 아 닙 니 다.
이상 은 JVM 메모리 모델 을 배 우 는 지식 에 대한 정리 입 니 다.저희 에 대한 지원 에 감 사 드 립 니 다.

좋은 웹페이지 즐겨찾기