JVM 가상머신이 실행될 때 사용해야 하는 메모리 영역은 크게 말하면 힙과 스택이 아닙니다. 사실 힙과 스택은 상대적으로 일반적인 용어일 뿐입니다
먼저 그림 1:
일반적으로
Java의 메모리 모델
메모리 모델은 힙 메모리(힙)와 메소드 영역(때때로 비힙이라고도 함)과 스택으로 구분됩니다
힙은 Young Generation(Young)과 Old Generation(Old/Tenured)으로 구분됩니다
』 Space
그런 다음 from과 to 공간이 교환됩니다. (from 영역의 물체가 충분히 오래되면, 즉 표시된 횟수가 이전 수준에 도달하면 구세대로 갈 예정)
메모리 크기 설정 매개변수는 아래 그림과 같습니다. 설명
-XMS: 힙의 최소 공간
-XMX: 힙의 최대 공간
-PermSize: 메소드 영역의 최소 공간
-MaxPermSize: 메소드 영역의 최대 공간
-Xss : 각 스레드의 스택 공간
-newSize: 새로운 세대의 최소 공간
-maxNewSize: 신세대의 최대 공간
힙의 대소문자와 신세대의 크기를 설정하여 구세대 메모리를 제어할 수 있습니다.
구세대 메모리 = 힙 메모리 - 신세대 메모리
stack
프로그램 카운터 실행된 라인 수. 작업 중 카운터의 라인 번호를 변경하여 실행되는 명령입니다. 네이티브 메소드 호출 시(native) 카운터는 빈 가상 머신 스택의 개인 소유자입니다. 메소드 종료 및 기타 정보로컬 변수 테이블: 기본 데이터 유형 , 객체 참조, long 및 double 유형은 두 개의 로컬 변수 공간을 차지합니다.메서드가 호출될 때마다 매개변수가 스택으로 푸시됩니다
로컬 메서드 스택 스레드 프라이빗 호출 시.
Heap:
Heap 메모리 여기서
힙은 신세대와 구세대로 구분됩니다
세대별 수집 알고리즘에서는 신세대를 에덴 공간(서바이터 공간, 서바이터 공간)으로 구분합니다. 이들 사이의 메모리 비율은 8:1:1입니다메서드 영역 저장소 클래스 정보, 상수, 정적 변수 및 JIT(Just-In-Time) 컴파일 코드
메서드 영역 아래에는 런타임 상수 풀도 있습니다: 리터럴 저장 및 컴파일 중에 생성된 기호 참조
블로그 게시물을 참조하세요
다음은 모두를 위한 테스트입니다.
기사에 언급된 정보 유형은 무엇인가요?
컴파일 중에 생성되는 리터럴 및 기호 참조는 무엇입니까?
위 내용은 JVM Java 메모리 영역에 대한 자세한 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!