>  기사  >  Java  >  JVM 학습 Java 런타임 데이터 영역

JVM 학습 Java 런타임 데이터 영역

零下一度
零下一度원래의
2017-06-01 10:32:381403검색

1. 프로그램 카운터

현재 스레드에서 실행되는 바이트코드의 줄 번호 표시입니다.

2. Java 가상 머신 스택

은 스레드 전용이며 스레드와 동일한 수명 주기를 갖습니다. 로컬변수테이블, 피연산자 스택, 동적 연결 목록, 메서드 종료 및 기타 정보를 저장하는 데 사용됩니다.

로컬 변수 테이블 저장 내용:

  • 기본 데이터 유형(boolean, byte, char, short, int, float, long, double)

  • 객체 참조(상수에 저장되는 기호 참조와 다름) pool )

  • returnAddress 유형(바이트코드 명령어의 주소를 가리킴)

64비트 long long 및 double 유형 데이터는 2개의 로컬 변수 공간(슬롯)을 차지하고 나머지는 1개의 슬롯을 차지합니다.

두 가지 예외:

  • StackOverflowError: 스레드에서 요청한 스택 깊이 > 가상 머신에서 허용하는 깊이

  • OutOfMemoryError: 동적 확장 중에 충분한 메모리를 적용할 수 없습니다.

3. (네이티브 메서드) 스택)

가상 머신 스택과 유사하지만, 네이티브 메서드 스택은 네이티브 메서드를 제공하는 반면, 가상 머신 스택은 Java 메서드를 제공한다는 점이 다릅니다.

4. Java Heap

모든 스레드에서 공유되며 객체 인스턴스와 어레이를 저장합니다.

가비지 컬렉터가 관리하는 주요 영역은 "GC Heap(Garbage Collected Heap)"이라고도 합니다.

신세대(Eden 공간, From Survivor 공간, To Survivor 공간)와 Old 세대가 포함됩니다.

여러 스레드 전용 할당 버퍼를 분할할 수 있습니다(Thread Local Allocation Buffer, TLAB).

물리적으로는 불연속적일 수 있지만 논리적으로는 연속적일 수 있습니다.

확장 가능: -Xmx 및 -Xms 컨트롤. -Xmx 최대 힙 메모리 크기, -Xms 초기 힙 메모리 크기.

인스턴스 할당을 완료하는 데 사용할 수 있는 메모리가 힙에 없고 더 이상 확장할 수 없는 경우 - OutOfMemoryError

5. 메서드 영역(별칭 Non-Heap)

도 모든 스레드에서 공유되며 사용됩니다. 가상 머신 클래스 정보, 상수, 정적 변수, JIT(Just-In-Time) 컴파일러로 컴파일된 코드 및 기타 데이터에 의해 로드된 를 저장합니다.

"영구 세대"라고도 하지만 본질적으로 동일하지는 않습니다.

영구 세대의 상한은 -XX:MaxPermSize입니다.

6. 런타임 상수 풀

은 메소드 영역의 일부입니다.

7. Direct Memory

JDK1.4에 새로 추가된 NIO(New Input/Output) 클래스에는 Nativefunction라이브러리를 사용하여 직접 할당할 수 있는 채널 및 버퍼 기반의 I/O 방식이 도입되었습니다. 힙 메모리. Java 힙 크기(-Xmx)에 의해 제한되지 않으므로 각 메모리 영역의 합이 실제 메모리 제한보다 커져 동적 확장 중에 OutOfMemoryError가 발생할 수 있습니다.

요약:

  • 세 개의 메모리 영역 1, 2, 3은 각 스레드에 전용입니다.

  • 4와 5는 모든 스레드에 공통됩니다.

  • 6은 5

  • 7의 일부입니다. 가상 머신의 메모리 영역 밖의 다른 물리적 메모리에 속하는 머신 런타임 데이터 영역의 일부

[관련 권장 사항]

1 java 컬렉션 프레임워크 연구 노트

2. Java 런타임 코드 예제에 대한 두 가지 유형의 계산 소개

3

JDBC 예제 코드를 학습하는 Java 트랜잭션 관리에 대한 자세한 설명

위 내용은 JVM 학습 Java 런타임 데이터 영역의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.