JVM 연구 노트 (A) - 자바 메모리 영역

런타임 데이터 영역

런타임 데이터 영역

프로그램 카운터 (기록 프로그램을 실행하는 위치)

  • 프로그램 카운터는 더 작은 메모리 공간은 현재 실행중인 쓰레드의 지표 바이트 코드 라인 수로 알 수있다
  • 카운터의 값을 변경하여 바이트 코드 해석기 챔버는, 예외 처리를 분기 루핑 다음 분기를 실행되는 바이트 코드 명령을 선택하고, 다른 기본 기능 스레드 회복 카운터 완전한 의존
  • 자바는 스레드가 높은 위치에서 정지 할 때이 회전을 수행 할 수 있습니다 편리하면, 실행 기록 스레드를 기록 할 필요가, 타임 슬라이스가 스레드의 타임 슬라이스가 소진 실행 스레드에 의해 할당 된 멀티 스레드 따라서 각 스레드가 카운터를 가질 필요가 계속, 카운터 스레드는 스레드 비공개로, 서로 독립적으로, 고립 된 스레드
  • 자바 방법, 지침 바이트 코드 주소 카운터 기록이 실행되고, 네이티브 메소드 실행을 실행, 카운터는 비어 있습니다.

두, 자바 가상 머신 스택

VM 스택

  1. 자바 가상 머신 스택
    • 그것은 동일한 스레드에서 스레드 개인 라이프 사이클이다. 각각의 방법은, 저장 정보 로컬 변수 오퍼랜드 스택, 동적 링크있어서 수출하는데 사용되는 스택을 동시에 수행하는 프레임 (스택 프레임) 테이블을 생성하는 동안, Java 가상 머신 스택에있어서의 메모리 모델은 실행을 설명했다. 스택 프레임 상당의 완료에있어서 각 호출 프로세스에 가상 머신 스택 밀어
  2. 지역 변수 테이블
    • 종래의 객체 참조 (또는 포인터를 오브젝트 참조 오브젝트 핸들), 리턴 주소 유형의 컴파일러 (포인터가 바이트 코드 명령어를 처리하는)의 모든 기본 데이터 형식
    • 길고 방법을 입력 할 때 이중 권취 두 로컬 데이터 변수 공간 (구멍), 데이터 타입의 나머지 황천 최종 컴파일 중 지정된 표시 만 로컬 변수 테이블을 차지까지, 이러한 방법은 프레임을 필요 로컬 변수 공간 할당 방법은 운전 중에 변화하지 않는다, 판정
  3. StackOverflowError가와 OutOfMemoryError가 : 예외가 발생합니다

셋째, 네이티브 메소드 스택 (기본 방법 스택)

  1. 네이티브 메소드 스택 방법, 사용에 사용되는 가상 머신 기본 방법 서비스, 가상 머신 사양 언어, 데이터 구조에 사용하는 것은 필수가 아닙니다.
  2. 가상 머신에서 하나의 스택에 직접 네이티브 메소드 스택에 일부 가상 머신 (예 : 핫스팟)
  3. StackOverflowError가와 OutOfMemoryError가 : 예외가 발생합니다

네, 자바 힙 (자바 힙)

  1. 자바 힙이 생성 될 때 가상 머신이 시작 메모리 자바 가상 머신 관리의 가장 큰 부분이며, 모든 스레드에 의해 공유
  2. 자바 힙 객체 인스턴스의 유일한 역할은 저장된다
  3. 자바 힙 가비지 수집기에 의해 관리되는 메인 구역이고

V. 메소드 영역 (heap 이외)

  1. 스레드에 의해 공유 지역은 스토리지 가상 머신은로드 된 클래스 정보 {정규화 된 클래스 (패키지 이름. 클래스 이름), 직접 부모입니다. 정규화 된 클래스 이름, 직접 인터페이스 수정, 상수, 정적 변수의 정렬 된 목록은 시간 컴파일러는 코드 및 기타 데이터를 컴파일
  2. 런타임 상수 풀
    • 저장소에로드 클래스 런타임 상수 풀 후 메소드 영역에 각종 문자 및 기호의 참조를 저장할 수있는 컴파일러에 의해 생성

여섯째, 직접 메모리

사물

메모리 할당 때 오브젝트 작성

메모리 할당
  1. 포인터 충돌

    절대 정규 힙 메모리 포인터에 의해 사용되는 메모리 및 상기 메모리는 사용되지 않는 두 개의 교차하지 메모리에만 피사체 거리로 포인터를 할당 할 간격은 크기와 같다

그림 삽입 설명 여기

  1. 무료 목록

    메모리 불규칙가 맞물린되지 않는 메모리로 사용되어왔다, 기록의 연결리스트를 사용하여 메모리 공간을 사용하지 않는 시간 할당 된 객체는 충분히 큰 메모리 목록에서 나누어 찾을 수

메모리 할당 - 무료 목록

둘째, 메모리 레이아웃 객체 (핫 스폿)

1. 개체 머리
  1. 저장 런타임 데이터는 해시 코드 자체 (막 워드)를 오브젝트의 GC 세대 세 잠금 상태 플래그 쓰레드 로크, 스레드 ID 바이어스 바이어스 소인을 보유
  2. 입력 포인터의 클래스 객체에 대한 포인터 즉, 가상 머신은 객체가 어느 클래스에 속하는 것으로 결정된다 메타이며
데이터 실시 예 2
  • 효과적인 정보 객체는 실제로 저장됩니다
3. 정렬 충전
  • 메모리의 개체 8 바이트, 자리의 전체 정수배에 의해 점령

위치 셋째, 접근

1. 핸들 액세스 (안정적)

핸들로서, 메모리 셀을 분할 자바 스택은 스토어 오브젝트 레퍼런스 오브젝트 핸들 주소는 각각의 특정 객체의 인스턴스 데이터의 핸들 및 데이터 유형의 주소 정보에 포함

핸들 방문

2. 직접 액세스 포인터 (핫스팟 빨리 위치를 사용)

참조 유형은 Java 힙의 객체 주소를 저장, 힙 오브젝트 유형의 데이터를 배치하는 방법을 고려하는 객체

그림 삽입 설명 여기

게시 17 개 원래 기사 · 원 찬양 한 · 전망 (652)

추천

출처blog.csdn.net/c_c_y_CC/article/details/93229033