Java 및 JVM 메모리 모델의 실행 시간 데이터 영역의 차이점

우선, 두 개의 완전히 다른 개념이다, 그것은 혼동하지 않아야합니다.

1. 자바 메모리 모델은 무엇인가?

자바 메모리 모델은 시인성 자성 문제를 해결하기 위해 주로 멀티 스레드 자바 (공유 메모리에 대응하는 실제 조작량) 스레드의 경우 규격에 대한 쓰기 변수를 공유하는 가변 스레드 공유 해결 운영 충돌합니다.

일반적인 멀티 스레드 프로그램은 다음과 같습니다

  • 그 결과 비 참조
  • 육안은 프로그램의 정확성을 감지 할 수 없습니다
  • 다른 성능의 다른 운영 플랫폼
  • 오류 재현하기 어려운

그래서 JVM 사양은 멀티 스레드 메모리 연산의 규칙의 일부 자바 가상 머신을 정의하고, 주로 휘발성 및 동기화 된 두 개의 키워드에 반영.

  • 휘발성 멀티 스레드 읽기시 시인성을 확보하고 JVM에 의해 제공되는 공유 변수에 작성하는 것입니다, 주요 역할은 공유 변수의 휘발성 수정 재정렬을하지합니다 (CPU 캐시와 캐시 일관성 프로토콜을 여기에 관련) 금지, 캐시입니다 하지만, 자성 작업을 공유 변수를 보증하지 않습니다 : (재정렬 많이 읽고 속도가 성능을 향상시키기 위해 수행 쓰기 메모리보다 빠른 CPU 상태에서의 처리의 최적화).
  • JVM 동기화 로크기구 및 그 로크 동작 로크 가시 영역 정돈되도록 원자 메모리 배리어 특성에 의해 제공된다.
  • 로크 충돌은 목적 (정적 클래스 객체가 잠겨은 로크가 현재 비 정적 객체이며, 즉 이것은 로크 블록 로크 방법은 사용자 객체 임) 메모리 오브젝트 헤더 "주권"힙 메모리 만 스레드 있도록 배타적 로크 영역에 의해 고정하는 배타적 즉, 원 동작은 "주권"을 취득 할 수있다
  • 이전과 코드 (부하 배리어) 및 저장 배리어 (스토어 배리어)를 적재 한 후, 배리어의 첨가에 의해, 로킹 블록의 공개 또는 공유 변수를 동작시키는 방법을 보장
  • 장벽 (배리어 획득) 전과 후의 코드 박리 배리어 (릴리스 배리어)을 첨가하여 얻는다 공유 변수의 동작을 잠 그거나 차단하는 순차적 방법을 보장

2. JVM 런타임 데이터 영역은 무엇인가?

JVM 실행 데이터 영역 방법 지구 힙 메모리, 가상 머신 스택 원시 메소드 스택, 프로그램 카운터를 포함하여 이루어 Java 프로세스 메모리를 실행하는 Java 가상 머신 논리적으로 분할된다. 이 블록은 자바 가상 머신의 작동에 서로 다른 데이터 구조로 메모리의 사용에 적용하기 위해 실제로 다른 Java 프로세스입니다.

  • 메소드 영역 : 상수, 정적 변수, 컴파일 된 코드 및 다른 데이터를 저장하기위한 JVM로드 클래스 정보. 다른 가상 머신이 다른 구현 영구적 소자의 공간에있어서의 영역 Java7, Java8 방법 존 대신 핫스팟 오라클을 가지고, GC기구에 의해 관리된다.
  • VM 스택 : 공간의 각 스레드에 전용는 스택 프레임 스택 프레임에 대응하는 방법은 복수의 스택 프레임이 로컬 변수 테이블은 오퍼랜드 스택, 동적 링킹, 리턴 어드레스에있어서, 부가 정보 등을 포함한다. 기본 최대 스택 메모리 1M는 StackOverflowError가 넘어 달렸다.
  • 기본 방법은 스택이 : 가상 머신과 비슷한 스택, 가상 머신은 준비의 기본 및 기본 방법을 사용하는 것입니다. 구체적인 실현은 가상 머신 제조 업체에 의해 이루어집니다. 캐스트에 StackOverflowError의 크기를 초과하면서 핫스팟 가상 머신은, 일관성있는 가상 머신 스택을 달성했다.
  • 프로그램 카운터 : 원시 메소드가 실행 널인 경우, 바이트 코드의 현재 스레드의 기록 위치는, 바이트 코드 명령은 어드레스에 저장된다. CPU가 명령어에서 동시에 하나의 스레드를 실행할 수있는 스레드 스위치를 프로그램 카운터로 정확한 위치를 복원하기 위해 수행된다.
  • 힙 메모리 : 데이터 영역이 차지하는 공간의 가장 큰 부분은 기존과 핫스팟 가상 머신 년의 새로운 세대로 구분되어 수정 된 개체 인스턴스를 액세스 할 수있는 모든 스레드가 저장되어있다, 새로운 세대는 에덴 영역과 Survivor0 영역으로 나누어 져 Survivor1 영역입니다.

추천

출처blog.51cto.com/14230003/2443407