>  기사  >  Java  >  JVM 메모리 모델이란 무엇입니까?

JVM 메모리 모델이란 무엇입니까?

青灯夜游
青灯夜游앞으로
2019-11-23 16:25:113227검색

이 기사는 JVM 메모리 모델에 대한 사전 이해를 제공합니다. 이는 특정 참조 가치가 있습니다. 도움이 필요한 모든 사람에게 도움이 되기를 바랍니다.

JVM 메모리 모델이란 무엇입니까?

컴퓨터 메모리 모델

프로그램이 실행될 때 CPU는 메인 메모리에 액세스하여 데이터를 얻습니다. 그러나 CPU의 급속한 발전으로 CPU 액세스 속도가 점점 빨라지고 있으며, 하드웨어도 점점 빨라지고 있습니다. CPU의 조건을 충족할 수 없습니다. 메모리에는 캐시 메커니즘이 있습니다. CPU마다 해당하는 다중 레벨(보통 3개) 캐시가 있습니다. 레벨 캐시 - 3단계 캐시 - 메인 메모리, 액세스 속도를 향상시키지만 동시에 서로 다른 CPU의 캐시에 있는 데이터가 다를 수 있으므로 CPU와 메인 메모리가 데이터 동기화를 달성할 수 없습니다

JAVA 메모리 모델

JAVA 메모리 모델(JMM)은 컴퓨터와 일치합니다. 메모리 모델은 메모리 장벽을 설정하여 다양한 하드웨어 및 운영 체제의 액세스 차이를 보호하여 Java 프로그램이 달성할 수 있도록 보장합니다. 다양한 플랫폼에서 일관된 메모리 액세스 효과.

다섯 가지 주요 메모리 영역

1. 프로그램 카운터

각 스레드에는 프로그램 카운터가 있습니다. 프로그램 카운터는 현재 스레드의 프로그램 바이트 코드 라인 번호를 식별하는 데 사용됩니다. , 프로그램 카운터가 저장합니다. 이는 바이트코드 파일의 행 번호입니다. 기본 메소드가 실행 중일 때 프로그램 카운터의 내용은 비어 있습니다. 다른 스레드에는 스레드에 비공개인 고유한 프로그램 카운터가 있습니다

2 .JAVA 가상 머신 스택

각 메소드 로컬 변수 테이블, 작업 스택, 동적 링크, 메소드 종료 및 기타 정보 저장을 포함하여 런타임 중에 스택 프레임이 생성됩니다. 각 메서드가 호출되는 과정은 가상 머신 스택의 스택 프레임이 스택에 푸시된 후 스택 밖으로 튀어나오는 과정에 해당합니다.

JAVA 가상 머신 스택은 주로 메소드 매개변수, 메소드 내부의 로컬 변수, 컴파일 중에 로드된 데이터 유형 및 스레드에 비공개인 반환 주소 유형을 저장하는 데 사용됩니다

3 로컬 메소드 스택

및 JAVA. 가상 머신 스택 기능은 비슷하지만 차이점은 후자가 가상 ​​머신이 실행하는 자바 메소드(바이트코드)를 서비스하고, 로컬 메소드 스택은 가상 머신이 호출하는 네이티브 메소드, 즉 기본 서비스를 서비스한다는 점이다. 일반적으로 C 또는 C++로 작성됩니다

4 .Heap

힙은 가상 머신이 로드하는 메모리 영역 중 가장 큰 부분으로 객체 인스턴스를 저장하는 데 사용됩니다. 논리 주소가 연속적인 한. 신세대와 구세대로 나누어지는데, 신세대와 구세대의 비율은 1:2입니다. (-XX:NewRatio 매개변수로 지정 가능)

5 메소드 영역

이라고도 합니다. 가상 머신이 로드한 클래스 정보, 상수 및 정적 변수를 저장하는 데 사용되는 영구 생성은 스레드의 공유 영역이며 JDK8 이후에 폐기되었으며 대신 메타스페이스가 사용되었습니다

권장 튜토리얼: java 튜토리얼

위 내용은 JVM 메모리 모델이란 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 cnblogs.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제